在cygwin / windows下的NPM脚本:命令的语法不正确

我在Windows 7机器上运行Node 6.9.5和NPM 3.10.10。 我的terminal是Cygwin 2.877。

如果我尝试在Cygwin中运行以下,它工作正常:

mkdir mydir/mysubdir; 

但是,如果我把它放到一个package.json文件中,例如:

 "scripts": { "test": "mkdir mydir/mysubdir" }, 

并运行:

 npm run test 

它失败:

 The syntax of the command is incorrect. 

谷歌search上面后,它似乎是一个Windows命令提示错误,而不是一个Cygwin之一。 因此,似乎NPM正在尝试使用命令提示符而不是现有的Cygwin环境来运行脚本。

我怎样才能解决这个问题? 或者说,我怎样才能确保NPM在它被调用的terminal环境中运行脚本?

脚本总是运行在默认的Windows shell中,而不是cygwin。

如果你想让它在bash中运行,那么把它放在package.json

 "scripts": { "test": "bash test.sh" }, 

并把它放在test.sh

 #!/bin/bash mkdir mydir/mysubdir 

或者,正如csvan在评论中指出的那样,您可以使用Node脚本代替shell脚本:

 "scripts": { "test": "node test.js" }, 

这种方法对于跨平台兼容性甚至更好。

也可以看看:

  • 为什么DEBUG = foo node index.js`在`package.json`的`scripts`部分失败