最近接手系统中采用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