自定义全局常量(DefinePlugin)
"scripts": {
"build": "DEBUG=true NODE_ENV=production webpack"
}
1
2
3
2
3
new webpack.DefinePlugin({
// 特别注意这里要JSON.stringify处理下
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
DEBUG: JSON.stringify(process.env.DEBUG)
})
1
2
3
4
5
2
3
4
5
index.js:我们在业务代码中可以直接使用
NODE_ENV
和DEBUG
。
console.log(NODE_ENV, DEBUG);
if (NODE_ENV === 'production') {
console.log('Welcome to production');
}
if (DEBUG) {
console.log('Debugging output');
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
运行
yarn run build
,输出结果如下:
production true
Welcome to production
Debugging output
1
2
3
2
3
自定义环境变量(EnvironmentPlugin)
EnvironmentPlugin是一个通过DefinePlugin来设置process.env环境变量的快捷方式。
// 设置默认值的对象,如果在process.env中对应的环境变量不存在时将使用指定的默认值
new webpack.EnvironmentPlugin({
// 不同于DefinePlugin,默认值将被EnvironmentPlugin执行JSON.stringify
NODE_ENV: process.env.NODE_ENV,
DEBUG: process.env.DEBUG
})
1
2
3
4
5
6
2
3
4
5
6
console.log(process.env.NODE_ENV, process.env.DEBUG);
if (process.env.NODE_ENV === 'production') {
console.log('Welcome to production');
}
if (process.env.DEBUG) {
console.log('Debugging output');
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
运行
yarn run build
,输出结果如下:
production true
Welcome to production
Debugging output
1
2
3
2
3