通过npm自动运行gulp任务

时间:2014-11-22 14:04:51

标签: node.js npm gulp

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

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

然后我可以运行

等命令
npm run minify

哪个好,但每次我在gulpfile中有新任务时,我都需要将它们添加到脚本部分下的package.json中,有没有更好的方法呢?

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

2 个答案:

答案 0 :(得分:30)

我有没有得到你的待遇:我继续为你做了一个简单的npm模块来处理这个问题。

<强> gulp-npm-script-sync

以下是它的要点:

  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;
  });

full source做的事情就像用同样的缩进和东西写回来的package.json一样。

所以,请继续:npm install --save-dev gulp-npm-script-sync

坚持你的gulpfile:

var gulp = require('gulp');
var sync = require('gulp-npm-script-sync');

// your gulpfile contents

sync(gulp);

每次使用新任务更新gulpfile时,都会更新package.json。

你甚至可以将它扔进一个gulp任务:

gulp.task('sync', function () {
  sync(gulp);
}

答案 1 :(得分:25)

  

Brian Brennan给了a fantastic suggestion:补充道    ./node_modules/.bin 到您的$PATH变量。 然后您可以在本地运行   只要您位于a的顶级目录中,就会安装实用程序   项目

来源:Keeping clean

无需全局安装软件包即可轻松调用它。请记住,上面的路径应该预先


或者,从版本2.0.0开始,npm提供了将额外参数传递给运行命令的功能。这些参数将简单地附加到您的脚本命令。

在您的情况下,来自package.json的以下脚本:

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

可以npm run gulp -- testnpm run gulp -- minify等方式调用