2016-08-21 6 views
0

再利用できるgulp-notify success関数が必要です。私はすべての仕事に同じフォーマットを使用しており、それをきれいにしたいと思っています。ここに私が今やっていることの例があります:Gulp通知グローバル成功関数

gulp.task('build-css', function() { 
    const s = gsize(); 

    return gulp.src('src/css/main.css') 
     .pipe(plumber({ errorHandler: onError })) 
     .pipe(cssmin()) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest('dist/css')) 
     .pipe(s) 
     .pipe(notify({ 
      title: function() { 
       return '<%= file.relative %> - ' + s.prettySize; 
      }, 
      onLast: true, 
      subtitle: "Successfully Compiled", 
      message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ", 
      templateOptions: { 
       hour: new Date().getHours(), 
       minute: new Date().getMinutes(), 
       second: new Date().getSeconds() 
      } 
     })) 
}); 

私は複数のタスクで同じ通知機能を再利用しています。私はこのようなことを試みたが、それぞれの試みはエラーを投げる。この特定のエラーは、配管工である - これを実現する方法についてCan't Pipe to Undefined

var onSuccess = function() { 
    const s = gsize(); 
    notify({ 
     title: function() { 
      return '<%= file.relative %> - ' + s.prettySize; 
     }, 
     onLast: true, 
     subtitle: "Successfully Compiled", 
     message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ", 
     templateOptions: { 
      hour: new Date().getHours(), 
      minute: new Date().getMinutes(), 
      second: new Date().getSeconds() 
     } 
    }) 
}; 

... 

gulp.task('build-css', function() { 
    const s = gsize(); 

    return gulp.src('src/css/main.css') 
     .pipe(plumber({ errorHandler: onError })) 
     .pipe(autoprefixer({ 
      browsers: ['last 6 versions'], 
      cascade: false 
     })) 
     .pipe(cssmin()) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(s) 
     .pipe(onSuccess()) 
     .pipe(gulp.dest('dist/css')) 
     .pipe(reload({stream: true})); 
}); 

任意の考えが理解されています! qballers液後

EDIT、唯一の問題は、ファイルサイズのため、undefinedを返します私の一気サイズのプラグインです:

const s = gsize(); 

// Success Message 
var notifyGeneric = { 
    title: function() { 
     return '<%= file.relative %> - ' + s.prettySize; 
    }, 
    onLast: true, 
    subtitle: "Successfully Compiled", 
    message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ", 
    templateOptions: { 
     hour: date.getHours(), 
     minute: date.getMinutes(), 
     second: date.getSeconds() 
    } 
}; 

... 

gulp.task('build-css', function() { 
    const s = gsize(); 

    return gulp.src(srcCssPath + 'main.css') 
     .pipe(plumber({ errorHandler: onError })) 
     .pipe(autoprefixer({ 
      browsers: ['last 6 versions'], 
      cascade: false 
     })) 
     .pipe(cssmin()) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(s) 
     .pipe(notify(notifyGeneric)) 
     .pipe(gulp.dest(cssPath)) 
     .pipe(reload({stream: true})); 
}); 

答えて

2

このあなたが吹き付けているが、あなただけにオブジェクトリテラルを使用することができるソリューションであればわかりませんあなたはコードの重複を保存します。

var notifyGeneric = { 
      title: function() { 
       return '<%= file.relative %> - ' + this.s.prettySize; 
      }, 
      onLast: true, 
      subtitle: "Successfully Compiled", 
      message: "@ Time: <%= options.hour %>:<%= options.minute %>:<%= options.second %> ", 
      templateOptions: { 
       hour: new Date().getHours(), 
       minute: new Date().getMinutes(), 
       second: new Date().getSeconds() 
      }, 
      s: {} 
     }; 
gulp.task('build-css', function() { 
    notifyGeneric.s = gsize(); 
    return gulp.src('src/css/main.css') 
     .pipe(plumber({ errorHandler: onError })) 
     .pipe(cssmin()) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(gulp.dest('dist/css')) 
     .pipe(notifyGeneric.s) 
     .pipe(notify(notifyGeneric)) 
}); 
+0

ありがとう、これは完璧です!私はnotifyGenericをvarにしなければならず、また、const s = gsize()のインスタンスも持っていなければなりません。グローバル変数として - すべてが期待どおりに機能した後。私のファイルはもっときれいです、ありがとう! –

+0

実際、私の塊のサイズは未定義で、どんな考えでも来ていますか? –

+0

あなたは現在の仕事を分かち合いますか? – qballer

関連する問題