.env文件是node運行時讀取的配置文件
首先時NODE_ENV,源自nodeis, NODE_ENV屬性一般可以省略不寫會有默認值,例如常用的 .env, .env.production,.env.development
這三個文件,如果沒有在文件里注明NODE_ENV屬性,那就默認就是分別對應:
NODE_ENV=production對應vue-cli-service buid命令NODE ENV=development對應vue-cli-service serve命令
以上三個命名不能變動,除此之外,可以另外自定義加上.env.test文件,也就是測試環境,或者.env.beta,也就是內部測試版,等等…
關於文件名:必須以如下方式命名,不要亂起名,也無需專門手動控制加載哪個文件
.env全局默認配置文件,不論什么環境都會加載合並(優先加載此文件,再加載下面兩個文件,同名變量會覆蓋此文件變量).env.development開發環境下的配置文件, 僅在開發環境加載。.env.production生產環境下的配置文件(也就是正式環境),僅在生產環境加載。- 以上三個文件命名不能改變,除此之外,可以另外自定義文件,如
.env.idc、.env.name - vue項目中配置.env文件, 變量命名必須以
VUE_APP_開頭,比如VUE_APP_URL,VUE_APP_PWD - 獲取.env中的全局變量, 比如, 我在
.env文件中設置了變量VUE_APP_BASE_URL = 'https://www.baidu.com', 在項目中我想獲取, 只需要使用process.env.VUE_APP_BASE_URL, 就可以取到。 - 配置啟動命令
在vue項目根目錄下,找到package.json文件,其中scripts對象是配置的vue啟動命令,比如npm run dev,配置如下:
"scripts": {
"serve": "vue-cli-service serve",
"serve-test": "vue-cli-service serve --mode test",
"build": "vue-cli-service build",
"test": "vue-cli-service build --mode test",
"all": "vue-cli-service build && vue-cli-service build --mode test"
}
每一行說明如下:
npm run serve, 啟動項目, 並且加載.env和.env.development文件npm run serve-test, 啟動項目, 並且加載.env和.env.test文件npm run build, 生產環境打包, 其中.env和.env.production文件會加載npm run test, 測試環境打包, 其中.env和.env.test文件會加載npm run all, 生產環境和測試環境同時打包, 加載不同的.env文件
關於文件的加載:
根據啟動命令vue會自動加載對應的環境,vue是根據文件名進行加載的,所以上面說“不要亂起名,也無需專門控制加載哪個文件”
比如執行npm run serve命令,會先加載.env文件,然后自動加載.env.development文件,同名變量后加載文件會覆蓋先加載的文件變量,不同名的直接保留
查看、打印合並后的變量,使用process.env(全局屬性,任何地方均可使用):
console.log(process.env);
webpack提供了配置模式(mode)
通過選擇 development,production 或 none 之中的一個,來設置 mode 參數,你可以啟用 webpack 內置在相應環境下的優化。其默認值為 production 。
- 選擇 development 打包后,一些沒有依賴的方法、變量、文件會保留。
- 選擇 production 打包后,一些沒有依賴的方法、變量、文件會被移除。代碼會進行壓縮,比 development 的文件小。
