在Windows上的package.json中外部定位的'npm run'脚本?

J. *_*rsh 7 javascript windows bash node.js npm

我们知道,您可以npm run通过向scripts您的package.json:添加哈希来运行任意命令:

"scripts": {
    "build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js"
}
Run Code Online (Sandbox Code Playgroud)

然后将运行npm run build-js.

您还可以将这些命令移到单独的脚本中,例如bash脚本,如下所示:

"scripts": {
    "build-js": "bin/build.sh"
}
Run Code Online (Sandbox Code Playgroud)

由于Windows无法运行bash脚本,因此显然本身不能在Windows上运行.您可以安装bash端口等,但我希望能够使用某种本机Windows构造来执行相同的操作.

我尝试了一些其他方法,包括使用child_process.exec从标准节点脚本文件中运行任意命令:

"scripts": {
    "build-js": "node bin/build.js"
}
Run Code Online (Sandbox Code Playgroud)

但我注意到child_process相对较大/密集型操作的窒息,使其使用起来难以置信.

是否有特定于Windows(甚至更好,跨平台)的方法将这些package.json npm run脚本移动到单独的文件中?最好是不需要bash的?

Isa*_*son 13

一篇关于使用NPM作为构建工具的有用文章,为什么不简单地使用JavaScript文件呢?

以下是文章中给出的示例(为清晰起见略作修改):

// scripts/favicon.js

var favicons = require('favicons');  
var path = require('path');  

favicons({  
  source: path.resolve('../assets/images/logo.png'),
  dest: path.resolve('../dist/'),
});


// package.json

"scripts": {
  "build-favicon": "node scripts/favicon.js",
},
"devDependencies": {
  "favicons": "latest",
}
Run Code Online (Sandbox Code Playgroud)

哪个将使用该命令在终端中运行 npm run build-favicon