Автоматический запуск задач gulp через npm
Обычно я запускаю gulp через npm, например. в моем пакете. json
"scripts": {
"test": "gulp test",
"minify": "gulp minify"
}
Затем я могу запустить команду, например
npm run minify
Что все в порядке, но каждый раз, когда у меня возникают новые задачи в моем gulpfile, мне нужно добавить их в package.json в разделе сценариев, есть ли лучший способ сделать это?
Причина. Я только устанавливаю npm глобально на мой path
, поэтому все остальные модули не будут загрязнять мой path
, поэтому мне нужно запустить их через npm
scripts
Ответы
Ответ 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
и т.д.