强制节点在Windows上使用git bash

时间:2016-02-17 16:31:10

标签: node.js windows bash

我有一个看起来像这样的package.json文件:

{
  "name": "APP",
  "version": "3.0.0",
  "private": true,
  "scripts": {
    "start": "node app.js",
    "test": "./test/dbLoad && env db=test test=1 jasmine"
  }
}

当我运行npm测试时,出现错误:

'.' is not recognized as an internal or external command

我猜这是因为节点正在使用Windows cmd.exe。如果我用bash作为前缀,该命令可以正常工作。我可以在节点中更改某种配置设置,以便它自动使用bash吗?

2 个答案:

答案 0 :(得分:5)

是的,你可以!

在运行npm run之前,你应该这样做:

set comspec=your_bash.exe_folder

NPM包,检查comspec环境,并在win32上运行它。 默认情况下ComSpec=C:\windows\system32\cmd.exe

有关详细信息,您可以查看NPM的源代码:lifecycle.js (Line 219)

if (process.platform === 'win32') {
    sh = process.env.comspec || 'cmd'
    shFlag = '/d /s /c'
    conf.windowsVerbatimArguments = true
  }

默认情况下,您可以使用注册表将环境comspec设置为bash。如果您需要任何帮助,请发表评论。

答案 1 :(得分:1)

设置NPM的script-shell指向Git Bash(注意较新的路径):

npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"

这告诉NPM使用指定的外壳程序(而不是默认的外壳程序)运行在package.json中定义的脚本(例如starttest),默认的外壳程序在Windows上是cmd.exe 。参见https://docs.npmjs.com/misc/config#script-shell