nuxt.js新增環境變數,區分專案打包環境操作
最近由於業務需求,開發了一個nuxt.js專案。
配置打包環境變數時,發現nuxt.js的文件過於簡單,無法做參照。
經查證了一些資料後,解決了該問題。遂整理成文件,釋出於此,給同行一些參照。
一、新增cross-env外掛
npm
npm i cross-env
yarn
yarn add cross-env
二、新增環境變數檔案
根目錄新增env.production
NODE_ENV = 'production'
VUE_APP_TITLE = 'production'
根目錄新增env.test檔案
NODE_ENV = 'production'
VUE_APP_TITLE = 'test'
三、注入全域性環境變數
在nuxt.confit.js中新增環境變數配置
export default { env: { VUE_APP_TITLE: process.env.VUE_APP_TITLE } }
四、修改打包命令
在package.json中修改以下命令
"scripts": { "dev": "nuxt","build": "cross-env process.env.VUE_APP_TITLE=production nuxt build","build:test": "cross-env process.env.VUE_APP_TITLE=test nuxt build","start": "nuxt start","generate": "nuxt generate","test": "jest" }
執行 yarn build打生產環境包,yarn build:test打測試環境包。
補充知識:vue專案分環境打包的具體步驟 --- 區分測試環境與線上環境的打包引用路徑
第一步: 安裝cross-env
npm install --save-dev cross-env
執行跨平臺設定和使用環境變數的指令碼
第二步:修改package.json
在package.json
裡設定打包命令 --- 主要是基於使用vue-cli建立的專案,配置檔案基於 NODE_ENV=production 去處理,根據盡少的改動原有配置檔案的原則,我們在這裡,NODE_ENV最好都設成production,
增加一個 EVN_CONFIG 欄位去區分環境
NODE_ENV=production EVN_CONFIG=dev 對應著
process.env.EVN_CONFIG(指的就是package.json 的EVN_CONFIG) 與config/index.js 的build 環境值 有對應關係
對package.json檔案中的scripts內容進行個性,新增上新定義的幾種環境的打包過程,裡的引數與前面的調協保持一致。
"build:dev": "cross-env NODE_ENV=production EVN_CONFIG=dev node build/build.js",
"build:test": "cross-env NODE_ENV=production EVN_CONFIG=testing node build/build.js",
"build:prod": "cross-env NODE_ENV=production EVN_CONFIG=production node build/build.js"
第三步:修改config/index.js
修改config/index.js檔案中build引數,這裡的引數會在build/webpackage.prod.conf.js中使用到
第四步 修改build/webpackage.prod.conf.js
env ------ process.env.EVN_CONFIG 與config/index.js 的build 環境值 有對應關係
true testing<br><br>console.log(env) ---- { NODE_ENV: '"production"',EVN_CONFIG: '"testing"' }
初衷是為了 -- 區分測試環境與線上環境的打包引用路徑
index: 模板
assetRoot: 打包後文件要存放的路徑
assetsSubDirectory: 除了 index.html 之外的靜態資源要存放的路徑,
assetsPublicPath: 代表打包後,index.html裡面引用資源的的相對地址
build: { // 新增test dev prod 三處環境的配製 production: require('./prod.env'),dev: require('./dev.env'),testing: require('./test.env'),// Template for index.html index: path.resolve(__dirname,'../dist/index.html'),// Paths assetsRoot: path.resolve(__dirname,'../dist'),// assetsRoot: process.env.EVN_CONFIG === 'testing'?'../dist':'../h5',// assetsSubDirectory: './static',// assetsPublicPath: '/h5/',assetsSubDirectory:process.env.EVN_CONFIG === 'testing' ? './static':'static',assetsPublicPath:process.env.EVN_CONFIG === 'testing' ? '/h5/':'/',
以上這篇nuxt.js新增環境變數,區分專案打包環境操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。