webpack配置process.env问题
今天学webpack配置的时候,按照教程里面的配置,发现一个不明白的地方,用的是旧版本的webpack3.12.0, 以下是配置:
const path = require('path')
const HTMLPlugin = require('html-webpack-plugin')
const { webpack } = require('webpack')
const isDev = process.env.NODE_ENV === 'development'
const config = {
target: 'web',
entry: path.join(__dirname, 'src/index.js'),
output: {
filename: 'bundle.js',
path: path.join(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
},
{
test: /\.(gif|jpg|jpeg|png|svg)$/,
use: [
{
loader: 'url-loader', // 转换为base64代码,依赖file-loader
options: {
limit: 1024,
name: '[name]-a.[ext]'
}
}
]
},
{
test: /\.styl$/,
use: [
'style-loader',
'css-loader',
'stylus-loader'
]
}
]
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: isDev ? '"development' : '"production'
}
}),
new HTMLPlugin()
]
}
if (isDev) {
config.devServer = {
port: 8000,
host: '0.0.0.0',
overlay: {
errors: true
}
}
}
module.exports = config
我不明白的是为什么plugins配置项里面要加上webpack.DefinePlugin这个设置,这个设置具体是干嘛的,这里面设置了process.env
,
但是之前代码第5行已经通过const isDev = process.env.NODE_ENV === 'development'配置过了啊
后面new webpack.DefinePlugin
里面再配置一次不是矛盾多此一举吗?就这里想不明白,请教一下各位大佬
还有就是webpack我发现版本好多啊,有3有4有5,到底应该学哪个版本的比较好呢?谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
const isDev = process.env.NODE_ENV === 'development'
仔细看,这不是配置,isDev
是布尔值,===
是逻辑判断。new webpack.DefinePlugin
是定义全局变量。学哪个…我是当工具,熟悉常规的配置,看看更新,用啥查啥
两个
process.env.NODE_ENV
的位置不同,上面那个isDev
仅在 node.js,也就是 webpack 打包的时候起作用;通过DefinePlugin
注入的那个会在你的业务代码中起作用。学哪个?这个问题很容易回答: