众所周知,您可以使用npm run
向scripts
添加package.json
哈希来运行任意命令:
"scripts": {
"build-js": "browserify browser/main.js | uglifyjs -mc > static/bundle.js"
}
然后使用npm run build-js
运行。
您也可以将这些命令移到单独的脚本中,例如bash脚本,如下所示:
"scripts": {
"build-js": "bin/build.sh"
}
由于Windows无法运行bash脚本,因此显然本身不能在Windows上运行。您可以安装bash端口等,但我希望能够使用某种本机Windows构造来做同样的事情。
我尝试了其他一些方法,包括使用child_process.exec
从标准节点脚本文件中运行任意命令:
"scripts": {
"build-js": "node bin/build.js"
}
但我注意到child_process
窒息了相对较大/密集的操作,使其难以使用。
是否有特定于Windows(甚至更好的跨平台)方式将这些package.json
npm run
脚本移到单独的文件中?最好是不需要bash的那个?
答案 0 :(得分:13)
从使用NPM作为构建工具的a helpful article,为什么不简单地使用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",
}
使用命令npm run build-favicon
答案 1 :(得分:3)
使用node来运行JS文件是一个选项,但如果你需要在Windows和* NIX上运行系统命令,那将使脚本变得混乱。对于跨平台脚本,请试用shelljs包。
答案 2 :(得分:1)
使用make
命令也是一个不错的选择。
生成文件
build-js:
browserify browser/main.js | uglifyjs -mc > static/bundle.js
的package.json
"scripts": {
"build-js": "make build-js",
}
您可以找到有关make
here。