我考虑看看有这条线在它的package.json跑噶测试项目
"scripts": {
"test": "NODE_ENV=test karma start karma.conf.js",
当我尝试“故宫测试”这并不工作在Windows。
我推测,这是因为这是一个* nix的语法。而且,事实上,如果我将其更改为
"scripts": {
"test": "set NODE_ENV=test && karma start karma.conf.js",
当我运行NPM测试测试开始。
环视,最优解似乎是使用交叉ENV包和改写它像
"scripts": {
"test": "cross-env NODE_ENV=test && karma start karma.conf.js",
所以我得到的交叉ENV会照顾“设置NODE_ENV”的部分在多操作系统的工作,但它的“&&”的一部分,我质疑。
难道我使用跨ENV时离开命令之间的“&&”?将在Windows和Linux的工作?
你跨ENV例如将无法正常工作,它应该仅仅是:
"scripts": {
"test": "cross-env NODE_ENV=test karma start karma.conf.js",
没有&&
。运行命令你完成设置变量后,立即来了。
我通过搜索如何设置多个变量跨env和还怎么运行多个脚本跨ENV /命令找到你的问题。因此,要解决你的问题的“多个命令”的一部分:
鉴于这两个测试脚本:
a.js
console.log('a', process.env.TEST_VAR, process.env.TEST_VAR_2);
b.js
console.log('b', process.env.TEST_VAR, process.env.TEST_VAR_2);
你会发现,如果你有在你的package.json随后的脚本不接受变量的脚本的&&
。例如:
"scripts": {
"check": "cross-env TEST_VAR=hello TEST_VAR_2=world node a.js && node b.js",
运行npm run check
得到:
a hello world
b undefined undefined
您可以通过具有运行多个命令一个额外的脚本,运行跨ENV解决这个问题:
"scripts": {
"check": "cross-env TEST_VAR=hello TEST_VAR_2=world npm run check-real",
"check-real": "node a.js && node b.js",
现在npm run check
得到:
a hello world
b hello world