NPM package.json中与OS无关的grunt脚本命令

时间:2012-11-06 02:42:19

标签: windows npm gruntjs

当命令grunt在与grunt.js文件相同的路径中的Windows shell中运行时,Windows选择使用Windows脚本宿主运行grunt.js。 The recommended path将明确调用grunt.cmd

这一切都很好,但是如果我想在我的NPM package.json中创建一个独立于操作系统的脚本命令,我该怎么办?如果我想在* nix:

中运行,我不能这样做
"scripts": {
    "dox": "grunt.cmd dox"
}

任何指针?或者,我缺少一大块拼图吗? (我对NPM和Grunt都同样陌生。)

2 个答案:

答案 0 :(得分:7)

我找到了创建只调用grunt.bat的{​​{1}}文件的解决方案:

@grunt.cmd %*

因此,在Windows上,只调用grunt.cmd会触发批处理文件,因为它的优先级高于Windows Scripting Host的grunt。在Linux上,常规grunt.js二进制文件被拾取。这对我来说是跨平台的。

答案 1 :(得分:0)

我遇到了同样的问题:当包的根目录中有tslint.js个文件,而package.json中的一个npm脚本只调用tslint时,npm将触发jscript而不是节点,导致弹出“ Microsoft JScript编译错误”。

一种解决方法是从.JS环境变量中删除PATHEXT