通过npm自动运行吞吐任务
我通常通过npm运行gulp,例如在我的package.json中
"scripts": { "test": "gulp test", "minify": "gulp minify" }
然后我可以运行命令如
npm run minify
这是可以的,但每次我在我的gulp文件中有新的任务,我需要将它们添加到脚本部分下的package.json,有没有更好的方法来做到这一点?
原因 :我只安装全局的npm到我的path
,所有其他模块不会污染我的path
,所以我需要通过npm
脚本运行它们
我有没有得到一个对你的待遇:我继续,让你一个简单的NPM模块来处理这个。
吞掉-NPM-脚本同步
这是它的要点:
var file = fs.readFileSync(config.path || 'package.json', 'utf-8'); var pkg = JSON.parse(file); var tasks = gulp.tasks; pkg.scripts = pkg.scripts || {}; Object.keys(tasks).forEach(function (t) { pkg.scripts[t] = 'gulp '+tasks[t].name; });
完整的源代码就像使用相同的缩进和东西写入package.json一样。
所以是的,继续前进: npm install --save-dev gulp-npm-script-sync
坚持这个你的大文件中:
var gulp = require('gulp'); var sync = require('gulp-npm-script-sync'); // your gulpfile contents sync(gulp);
每次你用新的任务更新你的gulp文件,它都会更新你的package.json。
你甚至可以把它扔进一个吞咽任务:
gulp.task('sync', function () { sync(gulp); }
Brian Brennan给出了一个奇妙的build议 :将
./node_modules/.bin
添加到$PATH
variables中。 然后,只要您位于项目的顶部目录中,就可以运行本地安装的实用程序。
来源: 保持清洁 。
无需全局安装软件包即可轻松调用。 只要记住上面的path应该是前置的 。
另外,从版本2.0.0开始, npm
提供了将额外parameter passing给我们的运行命令的能力。 这些参数将被简单地附加到您的脚本命令。
在你的情况,你的package.json
的以下脚本:
"scripts": { "gulp": "gulp" },
可以调用npm run gulp -- test
,或者npm run gulp -- minify
等。