我在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" },
这种方法对于跨平台兼容性甚至更好。
也可以看看: