2016-11-07 56 views
2

我在制作webpack时有an issue,我对生产环境中运行webpack的不同方式感到困惑(我正在使用Windows) 。Webpack:-p vs NODE_ENV =生产vs process.env.NODE_ENV

有人能解释它们之间的区别:

一:CLI

  • webpack -p

二:CLI

  • SET NODE_ENV=production
  • webpack

三:webpack.config.js

new webpack.ProvidePlugin({ 
    'process.env': { 
    NODE_ENV: JSON.stringify('production') 
    } 
}) 

我使用的反应,需要建立一个生产版本,这是两者微细化以及包括作出反应的量产版本。

回答

3

SET NODE_ENV=production将NODE_ENV环境变量设置为服务器上的“生产”。编译和捆绑您的javascript源文件的机器。因此,它可以为生产选择不同的webpack配置文件。

但是这个环境变量在这个JavaScript代码实际运行时没有效果。因为JavaScript代码将在不同机器上的浏览器上运行。

providePlugin有助于在浏览器中设置NODE_ENV变量。你的JavaScript实际在哪里运行。实际上,它确实将process.env.NODE_ENV的出现量替换为"production",而不是设置变量。但效果是一样的。

编辑:它实际上是DefinePlugin应该用于此目的。

Weback -p做广告做第二个以上,但似乎有some issues

0

基于webpack documentation设置webpack -p执行以下

  • 缩小使用UglifyJSPlugin
  • 运行LoaderOptionsPlugin
  • 设置节点环境变量

所以不是这样做的:

"scripts": { 
    "dist": "NODE_ENV=production webpack", 
    "start": "webpack" 
} 

你只需指定

"scripts": { 
    "dist": "webpack -p", 
    "start": "webpack" 
}