通过npm自动运行吞吐任务

我通常通过npm运行gulp,例如在我的package.json中

"scripts": { "test": "gulp test", "minify": "gulp minify" } 

然后我可以运行命令如

 npm run minify 

这是可以的,但每次我在我的gulp文件中有新的任务,我需要将它们添加到脚本部分下的package.json,有没有更好的方法来做到这一点?

原因 :我只安装全局的npm到我的path ,所有其他模块不会污染我的path ,所以我需要通过npm脚本运行它们

       

网上收集的解决方案 "通过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添加到$PATHvariables中。 然后,只要您位于项目的顶部目录中,就可以运行本地安装的实用程序。

来源: 保持清洁 。

无需全局安装软件包即可轻松调用。 只要记住上面的path应该是前置的


另外,从版本2.0.0开始, npm提供了将额外parameter passing给我们的运行命令的能力。 这些参数将被简单地附加到您的脚本命令。

在你的情况,你的package.json的以下脚本:

 "scripts": { "gulp": "gulp" }, 

可以调用npm run gulp -- test ,或者npm run gulp -- minify等。