webpack5 + vue2 多環境命令配置
阿新 • • 發佈:2022-05-12
目的:我想實現一套程式碼,實現多個命令打包出不同的程式碼;
修改package.json
{ "name": "name", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "serve:cp": "vue-cli-service serve --mode dev2", "build": "vue-cli-service build", "build:cp": "vue-cli-service build --mode prod2" }, }
預設情況下,vue-cli專案有三個模式:development,test, production
-
development
模式用於vue-cli-service serve
-
test
模式用於vue-cli-service test:unit
-
production
模式用於vue-cli-service build
和vue-cli-service test:e2e
可以通過傳遞--mode選項引數為命令列覆寫預設的模式。
vue-cli-service build --mode development
當執行 vue-cli-service
NODE_ENV
變數,它的值將取決於模式,例如,在 production
模式下被設定為 "production"
,在 test
模式下被設定為 "test"
,預設則是 "development"
。
NODE_ENV
將決定您的應用執行的模式,是開發,生產還是測試,因此也決定了建立哪種 webpack 配置。
環境變數
可以在專案根目錄中放置以下檔案來制定環境變數;
.env # 在所有的環境中被載入 .env.local # 在所有的環境中被載入,但會被 git 忽略 .env.[mode] # 只在指定的模式中被載入 .env.[mode].local # 只在指定的模式中被載入,但會被 git 忽略
環境檔案中只包含環境變數,其中 請注意,只有 NODE_ENV
,BASE_URL
和以 VUE_APP_
開頭的變數可以拿到。
環境檔案載入優先順序
為一個特定模式準備的環境檔案 (例如 .env.production
) 將會比一般的環境檔案 (例如 .env
) 擁有更高的優先順序。
只有以 VUE_APP_
開頭的變數會被 webpack.DefinePlugin
靜態嵌入到客戶端側的包中。你可以在應用的程式碼中這樣訪問它們:
console.log(process.env.VUE_APP_SECRET)
除了 VUE_APP_*
變數之外,在你的應用程式碼中始終可用的還有兩個特殊的變數:
-
NODE_ENV
- 會是"development"
、"production"
或"test"
中的一個。具體的值取決於應用執行的模式。 -
BASE_URL
- 會和vue.config.js
中的publicPath
選項相符,即你的應用會部署到的基礎路徑。
例如:
package.json為:
"serve:dev": vue-cli-service serve --mode dev
"build:cp": vue-cli-service build --mode prod
對應的檔案:
env.dev
env.prod
就可以使用命令:
npm run serve:dev 啟動專案;
npm run build:cp 構建專案;