查了些资料,没有完整说明的,有懂的大神看看下面的理解对不?
--env
"start": "webpack --env IS_ES serve --config webpack.conf.js --open Chrome.exe"
这个东西属于webpack
的一个配置项
只能在webpack.config.js
中使用,不能src
代码中使用
例如:
const path = require('path');
module.exports = env => {
// Use env.<YOUR VARIABLE> here:
console.log('NODE_ENV: ', env.NODE_ENV); // 'local'
console.log('Production: ', env.production); // true
return {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
};
};
DefinePlugin
定义一个node变量,可以在任何地方使用,通过process.env.xx
调用即可
定义一个全部变量,只能在src
代码中使用
new webpack.DefinePlugin({
PRODUCTION: JSON.stringify(true),
VERSION: JSON.stringify('5fa3b9'),
BROWSER_SUPPORTS_HTML5: true,
TWO: '1+1',
'typeof window': JSON.stringify('object'),
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
})
console.log(VERSION)
cross-env
设置node变量,只能在node环境使用,src
不行
因node在不同系统上设置环境变量process.env
的方式不同,
所以产生这个插件
process.env.NODE_ENV
webpack内部同时设置的node变量和全局变量
所以可以同时在配置文件和src代码中使用
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…