Как исправить ошибку "задача не в вашем gulpfile" при использовании ссылки npm?
у нас есть куча приложений, разделяющих общую логику gulp, поэтому мы сделали плагин gulp, который содержит кучу пользовательских задач.
однако мы хотели бы избежать установки gulp + наш плагин (вместе с половиной интернета) для каждого из приложений, которые мы разрабатываем.
в идеале, я хотел бы сделать:
npm install -g gulp
npm install -g <our gulp plugin>
затем для каждого приложения, мы просто должны сделать:
npm link gulp
npm link <our gulp plugin>
хотя это работает, проблема в том, что gulp больше не распознает наш обычай задачи залпом. Любая команда gulp, которую я запускаю, приводит к:
[15:16:51] Using gulpfile /workspace/my-app/gulpfile.js
[15:16:51] Task 'dev' is not in your gulpfile
[15:16:51] Please check the documentation for proper gulpfile formatting
задачи " dev " находятся в моем плагине gulp, почему он не находит его? Мой gulpfile.js имеет только это:
var gulp = require('gulp');
var mygulpplugin = require('mygulpplugin');
точно такой же процесс работает, когда gulp + плагин установлен локально. Есть идеи почему?
2 ответов
разобрался. Добавлена следующая строка в нижней части моего модуля:
module.exports = gulp;
и мой gulpfile в каждом модуле выглядит так:
var gulp = require('gulp');
var mygulpplugin = require('mygulpplugin');
gulp.tasks = mygulpplugin.tasks;
в качестве альтернативы принятому ответу вы можете сделать это так, как это было популярно во времена grunt, где вы вводите gulp в плагин:
в плагин: заверните все с:
module.exports = function(gulp) {
gulp.task('foo', function () {
...
})
...
}
и удалить require('gulp')
из файла плагина.
на gulpfile, который зависит от плагина вы тут:
var gulp = require('gulp');
require('my-gulp-plugin')(gulp)
вот так
- вы можете иметь несколько плагинов в главном gulpfile, потому что вы не переопределить
gulp.tasks
. - плагины не должны объявить
gulp
apackage.json
зависимость в каждом из плагинов (меньше работы дляnpm install
)