在實際項目中,每每會由於開發、測試以及生產環境的不一樣來採用不一樣的配置。能夠是接口host不一樣,亦或者是寫入cookie的domain不一樣。css
所以,咱們須要對webpack進行不一樣的配置來完成這樣的需求。html
在項目中,咱們使用vue-cli 直接初始化的項目,會有 ./build 以及 ./config 兩個文件夾vue
這裏將webpack的config文件分爲 base,dev,prod。其中,base文件中的參數配置是公用的,dev和prod是不一樣環境的不一樣配置。在合併配置時會用到一個插件webpack-merge,固然,vue-cli init的會自帶,本身安裝的話以下--node
npm install webpack-merge --save
開發中,咱們一般會將環境分爲開發,測試,生產。。。先貼段代碼webpack
var path = require('path') module.exports = { build: { testEnv: require('./test.env'), //測試配置 prodEnv: require('./prod.env'), // 生產配置 index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: './', //請根據本身路徑配置更改 productionSourceMap: false, productionGzip: false, productionGzipExtensions: ['js', 'css'] }, dev: { env: require('./dev.env'), //開發配置 port: 7777, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: {}, cssSourceMap: false } }
在config/index中,將build中的env配置進行修改,增長爲測試和生產環境,本地開發的環境配置不須要修改
... var env = config.build[process.env.env_config+'Env'] //prod中的修改 ...
"scripts": { "dev": "node build/dev-server.js", "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js", "build:test": "cross-env NODE_ENV=production env_config=test node build/build.js", },
module.exports = { NODE_ENV: '"production"', ENV_CONFIG: '"prod"', CONFIG_TEXT: '"我是生產環境哦"', };
module.exports = { NODE_ENV: '"production"', ENV_CONFIG: '"test"', CONFIG_TEXT: '"我是測試環境哦"', };
#開發調試 npm run dev #測試環境構建 npm run build:test #生產環境構建 npm run build:prod
經過執行命令修改NODE_ENV 和 ENV_CONFIG 構建不一樣的配置,須要更多的環境的時候,能夠經過修改config/index的build增長env,packjson增長命令來寫入更多的環境配置
在項目中,咱們能夠直接 process.env.CONFIG_TEXT 獲取到當前環境的參數變量web
process.env 是在dev.conf或prod.conf 中plugins 下配置的
new webpack.DefinePlugin({ 'process.env': env })
新人,第一次寫博,不喜勿噴哦!vue-cli