Vue多環境配置
阿新 • • 發佈:2018-12-10
env-config.js程式碼如下
/*
使用方法示例:
打包:
打包dev環境:npm run build --dev
打包test環境:npm run build --test
打包pro環境:npm run build --pro
本地執行:
本地執行dev環境:npm run dev --dev
本地執行test環境:npm run dev --test
無【--xxx】引數,則預設為dev環境:npm run dev
*/
'use strict'
const chalk = require('chalk')
const path = require( 'path')
/*
* 環境列表,第一個環境為預設環境
* envName: 指明現在使用的環境
* dirName: 打包的路徑,只在build的時候有用
* baseUrl: 這個環境下面的api 請求的域名
* assetsPublicPath: 靜態資源存放的域名,未指定則使用相對路徑
* */
const ENV_LIST = [
{
//開發環境
envName: 'dev',
dirName: 'dev',
baseUrl: 'http://47.104.24.10:8767',
assetsPublicPath:'/'
},
{
// 測試環境
envName: 'test',
dirName: path.resolve(__dirname, '../mySelf'),
baseUrl: 'http://47.104.xx.xx:8767',
assetsPublicPath: '/'
},
{
//生產環境(命令列引數(process.arg)中prod是保留字,所以使用pro)
envName: 'pro',
dirName: path.resolve(__dirname, '../mySelf'),
baseUrl: 'http://47.104.xxx.xxx:8767' ,
assetsPublicPath:'/'
},
]
console.log("process.env.assetsPublicPath="+process.env.assetsPublicPath)
//獲取命令列引數 http://nodejs.cn/api/process.html#process_process_argv
const argv = JSON.parse(process.env.npm_config_argv).original || process.argv
const HOST_ENV = argv[2] ? argv[2].replace(/[^a-z]+/ig,"") : ''
//沒有設定環境,則預設為第一個
const HOST_CONF = HOST_ENV ? ENV_LIST.find(item => item.envName === HOST_ENV) : ENV_LIST[0]
// 把環境常量掛載到process.env.HOST_ENV方便客戶端使用
process.env.BASE_URL = HOST_CONF.baseUrl
// process.env.ENV_NAME = HOST_CONF.envName
// log選中的變數
console.log(chalk.green('當前環境:'))
console.log(HOST_ENV)
console.log(chalk.green('當前環境對應的常量:'))
console.log(HOST_CONF)
module.exports.HOST_CONF = HOST_CONF
module.exports.ENV_LIST = ENV_LIST
需要在webpack.base.config.js引入env-config.js
找到webpack.dev.config.js和webpack.prod.config.js新增如下程式碼
完事!!!