1. 程式人生 > 程式設計 >nuxt.js新增環境變數,區分專案打包環境操作

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"   

nuxt.js新增環境變數,區分專案打包環境操作

第三步:修改config/index.js

修改config/index.js檔案中build引數,這裡的引數會在build/webpackage.prod.conf.js中使用到

nuxt.js新增環境變數,區分專案打包環境操作

第四步 修改build/webpackage.prod.conf.js

nuxt.js新增環境變數,區分專案打包環境操作

env ------ process.env.EVN_CONFIG 與config/index.js 的build 環境值 有對應關係

true
testing<br><br>console.log(env) ----
{ NODE_ENV: '"production"',EVN_CONFIG: '"testing"' }

nuxt.js新增環境變數,區分專案打包環境操作

初衷是為了 -- 區分測試環境與線上環境的打包引用路徑

nuxt.js新增環境變數,區分專案打包環境操作

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新增環境變數,區分專案打包環境操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。