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

csv*_*van 4 windows cygwin node.js npm

我在Windows 7计算机上运行节点6.9.5和NPM 3.10.10.我的终端是Cygwin 2.877.

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

mkdir mydir/mysubdir;
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其放入package.json文件中,例如:

"scripts": {
 "test": "mkdir mydir/mysubdir"
},
Run Code Online (Sandbox Code Playgroud)

并运行:

npm run test
Run Code Online (Sandbox Code Playgroud)

它失败了:

The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能解决这个问题?或者更确切地说,我如何确保NPM在其调用的终端环境中运行脚本?

rsp*_*rsp 6

该脚本始终在默认的Windows shell中运行,而不是cygwin.

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

"scripts": {
    "test": "bash test.sh"
},
Run Code Online (Sandbox Code Playgroud)

把它放进去test.sh:

#!/bin/bash
mkdir mydir/mysubdir
Run Code Online (Sandbox Code Playgroud)

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

"scripts": {
    "test": "node test.js"
},
Run Code Online (Sandbox Code Playgroud)

这种方法对于跨平台兼容性更好.

也可以看看:

  • `脚本总是在默认的windows shell中运行,而不是cygwin` - 这需要大约一百多张票... (3认同)