我对使用Webpack及其相关构建工具还很陌生,因此这个问题可能有些新手。请理解我。
背景:我正在开发一个客户端Web应用程序(使用Reactjs + Redux),并使用Webpack作为我的构建工具和dev-server加载器。现在,我需要在开发环境中编写一些代码(如记录日志等)。因此,我在网上看到了使用webpack.DefinePlugin
插件来设置process.env.NODE_ENV
变量的方法,代码如下:
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
})
]
那么,如果我的计算机上没有设置NODE_ENV
变量(目前没有),它会自动设置为开发模式。我是正确的吗?
那生产环境的机器呢?我需要在/etc/environment
文件中设置这个环境变量为“production”吗?
然后另一个问题是当我启动应用程序时,webpack如何知道NODE_ENV是什么?它是否在生产机器上进行构建并在构建的bundle.js中设置?($ webpack --progress -p
)
另一个问题是如何在生产或开发环境中启用/禁用功能?只需像这样编写if条件语句:
if(process.env.NODE_ENV == 'development'){
console.log('this is visible in development');
}
最后一个问题,如果 webpack 真的这样做了,那么它是将这段代码转译为构建的 bundle.js 吗?如果是,对终端用户可见吗?是否需要处理?
希望这不会太麻烦,非常感谢!
if
语句内部的内容。 - Dima Gimburg