nodejs有開發環境和生產環境,在package.json的依賴分別是dependencies和decDependencies,開發環境一般而言會在代碼中部署諸多測試用的代碼、警告甚至是庫。 而生產環境追求的是快速化、最小化,這些東西是沒必要放到生產環境中的。
webpack,也特別區分開發環境和生產環境
這樣:
cross-env NODE_ENV=production webpack --config ./webpack.config.js
執行了之后還會報錯
You are currently using minified code outside of NODE_ENV === 'production'. This means that you are running a slower development build of Redux. You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) toensure you have the correct code for your production build.
用node執行js文件的時候先執行一句export NODE_ENV=production
然后再node xxx.js
這樣node就會去讀取NODE_ENV這個環境變量得到當前的環境時生產環境
對應的,export NODE_ENV=development
這樣就是開發環境
你可以在js文件里通過:process.env.NODE_ENV
來判斷當前是生產環境還是開發環境
通常對這兩種不同的環境需要有不同的配置以及輸出:
比如生產環境使用80端口,開發環境使用3000端口,那就這樣寫:
var port = 3000; if (process.env.NODE_ENV === "production") port = 80;
對於package.json中的devDependencies是指開發過程中使用的對項目運行不產生影響只用來部署用的依賴,比如eslint用來檢查代碼,mocha用來測試,babel用來轉化代碼等等,這些應該在項目運行前就做好的。
那個報錯是說你用了它minify(這個詞不知道翻譯成什么好,簡化? 優化?小化?)好的版本,不是你自己簡化的,可能不太適應你的生產環境,它建議你自己做簡化,用loose-envify 來使代碼適應你的生產環節配置。