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
相关文章
相关标签/搜索