NODE_ENV跨平台设置

NODE_ENV跨平台设置

set NODE_ENV问题

最近接手系统中采用React作为管理端,其中有这样一句

"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这个方案。

使用cross-env解决跨平台

修改命令为

"build": "node ./tools/gulpfile.js&&cross-env NODE_ENV=__PROD__&&node ./tools/webpack.config.js"

执行后,结果还是TMD没生效。查看cross-env的Usage后,区别在于我使用了&&分隔,在后面的webpack.config.js中获取前面设置的NODE_ENV,问题是否出在这里呢?

&&与空格问题

感谢justjavac提供支持

&&为shell逻辑与运算符

格式
command1 && command2 [&& command3 …]
command1执行成功才会执行command2,任意命令执行失败则不会再执行后面的命令
shell执行命令可以(;、&&、||)间隔

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

cross-env

"build": "node ./tools/gulpfile.js&&cross-env NODE_ENV=__PROD__ node ./tools/webpack.config.js"

cross-env-shell

"build": "node ./tools/gulpfile.js&&cross-env-shell NODE_ENV=__PROD__ \"node ./tools/webpack.config.js && echo $NODE_ENV\""

\”\”包裹中的内容都可以有效取到cross-env-shell设置的环境变量,这里面的原理在于Node本身的跨平台机制spawn

参考

cross-env 不起作用怎么办?

转载请标明出处:
http://2tu.github.io/2018/01/18/NODE-ENV-cross/
本文出自Tu’s blog
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值