2015-03-10 2 views
8

У нас есть куча приложений, использующих общую логику глобализации, поэтому мы создали плагин gulp, содержащий множество пользовательских задач.Как исправить ошибку «Задача не в вашем gulpfile» при использовании ссылки npm?

Однако мы хотели бы избежать установки gulp + нашего плагина (вместе с половиной Интернета) для каждого из разрабатываемых нами приложений.

В идеале я хотел бы сделать:

npm install -g gulp 
npm install -g <our gulp plugin> 

Тогда для каждого приложения, мы просто должны сделать:

npm link gulp 
npm link <our gulp plugin> 

Хотя это работает, проблема не является глотком больше не распознает любые наши пользовательские задачи. Любая команда глотка бегают результаты:

[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 

The задачи «Дев» в моем глотке плагине, почему оно не найти его? Мой gulpfile.js имеет только это:

var gulp = require('gulp'); 
var mygulpplugin = require('mygulpplugin'); 

Точно такой же процесс работает, когда глоток + плагин устанавливается локально. Любые идеи почему?

+0

Можете ли вы показать, как быть определена 'dev' задача? –

+0

Нравится такое: gulp.task ('dev', ['clean'], function() { runSequence ('bower', 'jsBuildDev', 'buildCSS', 'indexBuildDev'); }); – zedix

ответ

5

Выяснил это. Добавлена ​​следующая строка в нижней части моего модуля:

module.exports = gulp; 

И мой gulpfile в каждом модуле выглядит следующим образом:

var gulp = require('gulp'); 
var mygulpplugin = require('mygulpplugin'); 
gulp.tasks = mygulpplugin.tasks; 
+0

Правильно ли это опечатка? module.exports = gulp. –

+0

Нет, это не опечатка. – zedix

+0

Я думаю, что @WilliamLepinski означает, что вы должны исправить '.'' ''. –

1

В качестве альтернативы принятого ответа, вы можете сделать это путем, который был популярным во время ворчать, где вы инъекционные глотка плагину:

в плагине: обернуть все с:

module.exports = function(gulp) { 
    gulp.task('foo', function() { 
     ... 
    }) 
    ... 
} 

и удалите require('gulp') из файла плагина.

В gulpfile, которая зависит от плагина вы выполните:

var gulp = require('gulp'); 
require('my-gulp-plugin')(gulp) 

Таким образом

  • вы можете иметь несколько плагинов в главном gulpfile, потому что вы не отменяют gulp.tasks.
  • модули не должны объявить gulp в package.json зависимость в каждом из плагинов (меньше работы для npm install)
Смежные вопросы