process.env
process.env是運行node腳本時的環境對象,此環境中的變量可以在process.env中取到,但只能在node腳本中取。
對於被webpack打包的項目js文件,必須在webpack.config中通過definePlugin將process.env的變量中轉一下,然后項目js文件中就能取到definePlugin中定義的變量。
webpack4提供了一種Mode模式, --mode production 參數會自動將definePlugin中加入process.env.NODE_ENV設置為"production",也就是省去了自己去操作這一步。除此之外,不同的mode還定制了一些其他的配置項。這與node的環境變量是兩個東西,只設置Mode並不能獲取node腳本中的process.env。
所以在webpack4的項目中,可以無需definePlugin就直接在項目中使用process.env.NODE_ENV,而其他版本不行。
dotenv
dotenv是一個能夠讀文件獲取環境變量的庫,文件形式有.env,.env.local,優先級也有區別。
create-react-app搭建的項目自帶這個包,本身可以在node腳本中直接獲取到,配合dotenv-webpack插件可以在項目中使用,導入的變量可以在項目文件中獲取。
dotenv的用處在於可以自定義環境變量,不局限於mode提供的NODE_ENV,也不用definePlugin了。