在运行npm脚本时,哪个shell npm正在使用?

时间:2017-04-26 17:20:49

标签: node.js bash shell npm fish

我在Windows上通过ConEmu运行鱼壳。鱼默认情况下不识别"&&"运营商然而有这个:

"scripts": {
  "test": "echo 'a' && echo 'b'"
}

并运行" npm run test"工作中。 所以我认为必须使用默认" cmd"这就是npm config ls -l | grep shell所说的,但...... 当我改变"测试"脚本:

"scripts": {
  "test": "echo 'a' && ls"
}

这也有效,而{< {1}}显然不支持" cmd"。

这到底是怎么回事?

2 个答案:

答案 0 :(得分:0)

我不知道在你的情况下使用了什么shell,也没有什么是检查哪个shell是npm使用的首选方法,但我有一些一般的提示,这可能会有所帮助。

你可以尝试

{ 
  "scripts": {
    "test": "echo $0" 
  }
}

可以产生如下结果:

$ npm run test

> @ test /home/matmat/test
> echo $0

sh

(对于linux上的bash)

C:\Users\qbolec\Documents\test>npm run test

> @ test C:\Users\qbolec\Documents\test
> echo $0

$0

在Windows Node.js命令提示符下。

您也可以尝试

  "test": "which ls"

获取更多信息。

答案 1 :(得分:0)

看起来行npm run将命令发送到sh shell,它通常指向默认的Bourne兼容shell。我没有你的模拟器的经验,但我敢打赌它在你的环境中使用bash(因为Fish不兼容Bourne)。