Подтвердить что ты не робот

Автоматический запуск задач gulp через npm

Обычно я запускаю gulp через npm, например. в моем пакете. json

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

Затем я могу запустить команду, например

npm run minify

Что все в порядке, но каждый раз, когда у меня возникают новые задачи в моем gulpfile, мне нужно добавить их в package.json в разделе сценариев, есть ли лучший способ сделать это?

Причина. Я только устанавливаю npm глобально на мой path, поэтому все остальные модули не будут загрязнять мой path, поэтому мне нужно запустить их через npm scripts

4b9b3361

Ответ 1

Я получил удовольствие от вас: я пошел вперед и сделал вам простой модуль 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;
  });

полный источник делает что-то вроде записи 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 с новой задачей, он обновляет ваш пакет .json.

Вы можете даже бросить его внутри задачи gulp:

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

Ответ 2

Брайан Бреннан дал фантастическое предложение: добавление ./node_modules/.bin к вашей переменной $PATH. Затем вы можете запускать локально установленных утилит, если вы находитесь в верхнем каталоге проект.

Источник: Сохранение чистой.

Не нужно устанавливать пакет по всему миру, чтобы он мог легко его вызывать. Просто помните, что вышеуказанный путь должен быть добавлен.


В качестве альтернативы, начиная с версии 2.0.0, npm предоставляет возможность передавать дополнительные параметры нашим командам запуска. Эти аргументы будут просто добавлены к вашей команде script.

В вашем случае следующий script из вашего package.json:

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

может быть вызван как npm run gulp -- test, или npm run gulp -- minify и т.д.