- npm run dev_uat 通过package.json找到 build/dev-server-uat.js
- dev-server-uat.js 第一步通过require(../config/index.js) 加载配置文件,得到config对象。
第二步赋值process.env.NODE_ENV = config.dev.uat.NODE_ENV;跟随config对象去找dev属性的配置。
第三部通过var webpackConfig = require(‘./webpack.dev.uat.conf’)找到对应的webpackConfig。
2.1. /config/index.js 第一步 require(../package.json)引入dependencies
2.2 第二步module.exports输出build、uat、dev三个不同属性的配置文件,分别对应不用的配置。
{
build: {
uat: require('./build_uat') //加载build_uat.js //NODE_ENV: 'build_uat'
pro: require('./build_pro') //加载build_pro.js //NODE_ENV:'build_pro'
}
dev:{
uat: require(./dev_uat)//加载dev_uat.js //NODE_ENV:'dev_uat'
pro: require(./dev_pro) //加载dev_pro.js //NODE_ENV:'dev_pro'
}
}
2.1.1 /config/dev_uat.js 通过exports {NODE_ENV: ‘dev_uat’}; //dev_uat
2.3 ./webpack.dev.uat.conf文件中通过:
var baseWebpackConfig = require('./webpack.base.conf') //基础webpack配置文件
merge(baseWebpackConfig,{
...
new webpack.DefinePlugin({
'pro.env': conf.dev.uat //dev_uat的webpack环境,
// ’pro.env': conf.dev.pro //dev_pro的webpack环境
})
...
})
- npm run build_uat
- 通过package.json找到 build/build_uat.js
/build_uat.js通过:
var config = require('./webpack.build.uat.conf')
...
new webpack.DefinePlugin({
'process.env' : config.build.uat //build_uat的webpack环境,NODE_ENV:'build_uat'
// 'process.env' : config.build.pro //build_pro的webpack环境,NODE_ENV:'build_pro'
})
...
通过require(../config)找到./config/index.js得到config对象
然后配置webpack的assetsRoot和assetsSubDirectory等属性。
以上配置只是改变process.env.NODE_ENV的值,所以在api.js或者mock.js里根据这一点分别
设置不同的接口地址,就可以实现打包或运行不同的环境。