2016-11-07 76 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" 
}