2015-12-20 8 views
6

Dies sollte einfach sein ... Ich versuche, eine Benachrichtigung zu erstellen, die del erfolgt.Wie man Gulp plugin Benachrichtige mit del?

Del = https://www.npmjs.com/package/del

Benachrichtigen = https://www.npmjs.com/package/gulp-notify

ich habe:

gulp.task('clean', function() { 
    return del(['distFolder']); 
}); 

, dass alles im distFolder löscht, bevor es wieder aufgebaut wird.

Was ich versuche zu tun, so etwas wie unten:

gulp.task('clean', function() { 
    return del(['distFolder']).pipe(notify('Clean task finished')); 
}); 

Die oben gibt einen Fehler - „Typeerror: del. (...) Rohr ist keine Funktion“

+0

Was passiert, wenn Sie versuchen, was Sie haben? –

+0

@ColinMarshall - Typeerror: del. (...) Rohr ist keine Funktion – RooksStrife

Antwort

3

Der Schlüssel dazu richtig zu erledigen ist, dass del ein Versprechen zurück. Also musst du mit dem Versprechen umgehen.

Ich habe eine gulpfile erstellt, die drei Aufgaben hat:

  1. clean zeigt, wie es zu tun.

  2. fail veranschaulicht den Punkt in der Lage, Ausfälle zu handhaben.

  3. incorrect repliziert die Methode in den OP's self-answer Es ist falsch, weil del ein Versprechen Objekt zurückgibt, ob es erfolgreich ist. So ist der && Test wertet immer den zweiten Teil des Ausdrucks und damit immer benachrichtigt Clean Done! selbst wenn es einen Fehler und wurde nichts gelöscht.

Hier ist der Code:

var gulp = require("gulp"); 
var notifier = require("node-notifier"); 
var del = require("del"); 

// This is how you should do it. 
gulp.task('clean', function(){ 
    return del("build").then(function() { 
     notifier.notify({message:'Clean Done!'}); 
    }).catch(function() { 
     notifier.notify({message:'Clean Failed!'}); 
    }); 
}); 

// 
// Illustrates a failure to delete. You should first do: 
// 
// 1. mkdir protected 
// 2. touch protected/foo.js 
// 3. chmod a-rwx protected 
// 
gulp.task('fail', function(){ 
    return del("protected/**").then (function() { 
     notifier.notify({message:'Clean Done!'}); 
    }).catch(function() { 
     notifier.notify({message:'Clean Failed!'}); 
    }); 
}); 

// Contrary to what the OP has in the self-answer, this is not the 
// correct way to do it. See the previous task for how you must setup 
// your FS to get an error. This will fail to delete anything but 
// you'll still get the "Clean Done" message. 
gulp.task('incorrect', function(){ 
    return del("protected/**") && notifier.notify({message:'Clean Done!'}); 
}); 
1

Wenn Sie Sehen Sie sich das Del-Modul an, es gibt keinen Stream zurück, daher wird es keine Pipefunktion geben (wie der Fehler erklärt).

Ich würde wahrscheinlich Schluck-clean, weil es besser integriert mit schluck Streaming-verwenden.

z.B.

var clean = require('gulp-clean'); 
var notify = require('gulp-notify'); 

gulp.task('clean', function() { 
    return gulp.src('distFolder', {read: false}) 
     .pipe(clean()) 
     .pipe(notify('Clean task finished')); 
}); 
0

es gelöst -

Knoten der Anmelder eine Abhängigkeit von mitzuteilen. Also sollte es schon in node_modules sein. Abhängig von Ihrer NPM-Version befindet es sich möglicherweise nicht im Stammverzeichnis.

hinzufügen ohne NPM installieren - var notifier = require('node-notifier');

gulp.task('clean', function(){ 
    return del(dist) && notifier.notify({message:'Clean Done!'}) 
});