最近接手系統中採用React做爲管理端,其中有這樣一句html
"build": "node ./tools/gulpfile.js&&set NODE_ENV=__PROD__&&node ./tools/webpack.config.js"
複製代碼
其中「set NODE_ENV=PROD」卻未在個人Mac下生效,其餘成員使用Windows。
緣由是Windows下使用set NODE_ENV=xx,Unix下應該爲export NODE_ENV=xx,因而不得不區分操做系統進行設置,因而就有了cross-env這個方案。java
修改命令爲node
"build": "node ./tools/gulpfile.js&&cross-env NODE_ENV=__PROD__&&node ./tools/webpack.config.js"
複製代碼
執行後,結果仍是TMD沒生效。查看cross-env的Usage後,區別在於我使用了&&分隔,在後面的webpack.config.js中獲取前面設置的NODE_ENV,問題是否出在這裏呢?webpack
感謝justjavac提供支持git
格式
command1 && command2 [&& command3 ...]
command1執行成功纔會執行command2,任意命令執行失敗則不會再執行後面的命令
shell執行命令能夠(;、&&、||)間隔github
cross-envweb
"build": "node ./tools/gulpfile.js&&cross-env NODE_ENV=__PROD__ node ./tools/webpack.config.js"
複製代碼
cross-env-shellshell
"build": "node ./tools/gulpfile.js&&cross-env-shell NODE_ENV=__PROD__ \"node ./tools/webpack.config.js && echo $NODE_ENV\""
複製代碼
""包裹中的內容均可以有效取到cross-env-shell設置的環境變量,這裏面的原理在於Node自己的跨平臺機制spawngulp
cross-env 不起做用怎麼辦?segmentfault