NODE_ENV跨平臺設置

set NODE_ENV問題

最近接手系統中採用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

使用cross-env解決跨平臺

修改命令爲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

&&爲shell邏輯與運算符

格式
command1 && command2 [&& command3 ...]
command1執行成功纔會執行command2,任意命令執行失敗則不會再執行後面的命令
shell執行命令能夠(;、&&、||)間隔github

正確使用 cross-env vs cross-evn-shell

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

轉載請標明出處:
http://2tu.github.io/2018/01/18/NODE-ENV-cross/
本文出自Tu's blog
相關文章
相關標籤/搜索