2015-03-10 7 views
8

Wir haben eine Reihe von Anwendungen, die gemeinsame Schlucklogik verwenden, also haben wir ein Schluckplugin erstellt, das eine Reihe von benutzerdefinierten Aufgaben enthält.Wie zu beheben "Task ist nicht in Ihrem gulpfile" Fehler bei der Verwendung von npm Link?

Wir möchten jedoch vermeiden, gulp + unser Plugin (zusammen mit der Hälfte des Internets) für jede der von uns entwickelten Anwendungen zu installieren.

Im Idealfall würde ich gerne tun:

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

Dann für jede App, würden wir einfach tun müssen:

npm link gulp 
npm link <our gulp plugin> 

Obwohl dies funktioniert, ist das Problem nicht mehr schlucken erkennt irgendeine unserer benutzerdefinierten Schluckaufgaben. Jeder Schluck Befehl Ich betreibe Ergebnisse in:

[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 

Die ‚dev‘ Aufgaben ist in meinem Zug-Plugin, warum ist es nicht zu finden, oder? Mein gulpfile.js nur hat dies:

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

Genau das gleiche Verfahren funktioniert, wenn schluck + das Plugin lokal installiert ist. Irgendwelche Ideen warum?

+0

Können Sie zeigen, wie die 'dev' Aufgabe definiert wird? –

+0

Gefällt mir: gulp.task ('dev', ['clean'], function() { runSequence ('bower', 'jsBuildDev', 'buildCSS', 'indexBuildDev'); }); – zedix

Antwort

5

Ich habe es herausgefunden. Hinzugefügt wurde die folgende Zeile am unteren Rand meines Moduls:

module.exports = gulp; 

Und mein gulpfile in jedem Modul sieht wie folgt aus:

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

Ist das ein Tippfehler oder? module.exports = schlucken. –

+0

Nein, es ist kein Tippfehler. – zedix

+0

Ich denke, @WilliamLepinski bedeutete, dass Sie '.' Zu ';' korrigieren sollten. –

1

Alternativ zu der Antwort akzeptiert, können Sie es die Art und Weise tun, die populär war in Grunzen Zeiten, wo man Schluck an das Plugin injizieren:

in der Plugin-: wickeln alles mit:

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

und entfernen Sie require('gulp') aus der Datei des Plugins.

In gulpfile, die auf Plugin hängt Sie dann tun:

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

Auf diese Weise

  • können Sie mehrere Plugins in der Haupt gulpfile haben, weil Sie nicht gulp.tasks außer Kraft setzen kann.
  • Plugins müssen in jedem der Plugins nicht erklären gulp eine package.json Abhängigkeit (weniger Arbeit für npm install)
Verwandte Themen