Как исправить ошибку "задача не в вашем 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 a package.json зависимость в каждом из плагинов (меньше работы для npm install)