1. 程式人生 > 其它 >webpack5 + vue2 多環境命令配置

webpack5 + vue2 多環境命令配置

目的:我想實現一套程式碼,實現多個命令打包出不同的程式碼;

修改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_ENVBASE_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 構建專案;