2016-03-24 29 views
1

我有一個吞噬3文件,我試圖升級到吞噬4.當我這樣做的一些任務工作的其他人不。是我收到三個錯誤如下:吞噬4遷移錯誤(你忘記發信號異步完成?)

乾淨的樣式:

gulp.task('clean-styles', function (done) { 
    var files = config.temp + '**/*.css'; 
    clean(files, done); 
}); 

[23:47:05] The following tasks did not complete: clean-styles 
[23:47:05] Did you forget to signal async completion? 

SCSS觀察家:

gulp.task('scss-watcher', function() { 
    gulp.watch([config.scss], ['styles']); 
}); 

[23:51:27] 'scss-watcher' errored after 2.46 ms 
[23:51:27] Error: watching ./src/client/styles/styles.scss: watch task has to be a function (optionally generated by using gulp.parallel or gulp.series) 

類型:(這會如果我刪除乾淨,款式工夫系列)

gulp.task('styles', gulp.series('clean-styles', function() { 
log('Compiling SCSS --> CSS'); 

return gulp 
    .src(config.scss) 
    .pipe($.scss()) 
    .pipe($.autoprefixer({ browsers: ['last 2 versions', '> 5%'] })) 
    .pipe(gulp.dest(config.temp)); 
})); 

[23:52:42] The following tasks did not complete: styles, clean-styles 
[23:52:42] Did you forget to signal async completion? 

獸醫:(工程)

gulp.task('vet', function() { 
    log('Analyzing source with ESLint'); 
    return gulp 
     .src(config.js) 
     .pipe($.if(args.verbose, $.print())) 
     .pipe($.eslint()) 
     .pipe($.eslint.format()) 
     .pipe($.eslint.failOnError()); 
}); 

功能:

function clean(path, done) { 
    log('Cleaning: ' + $.util.colors.blue(path)); 
    del(path, done); 
} 

function log(msg) { 
    if (typeof(msg) === 'object') { 
     for (var item in msg) { 
      if (msg.hasOwnProperty(item)) { 
       $.util.log($.util.colors.blue(msg[item])); 
      } 
     } 
    } 
    else { 
     $.util.log($.util.colors.blue(msg)); 
    } 
} 

我必須失去了一些東西。任何人都可以填補我缺少的東西嗎?

回答

2

乾淨的樣式

del並不需要一個回調函數。它返回一個Promise,你有你的任務返回:

function clean(path) { 
    log('Cleaning: ' + $.util.colors.blue(path)); 
    return del(path); 
} 
gulp.task('clean-styles', function() { 
    var files = config.temp + '**/*.css'; 
    return clean(files); 
}); 

SCSS觀察家

gulp.watch()不支持任務名稱的陣列了。你必須通過它的功能,gulp.series()gulp.parallel()

gulp.task('scss-watcher', function() { 
    gulp.watch([config.scss], gulp.series('styles')); 
}); 

風格

應與更改上述clean-styles工作。

+0

謝謝我能問1個以上問題編譯打字稿,當我得到以下錯誤。錯誤TS2304:找不到名字'Promise',錯誤TS2304:找不到名字'Map',錯誤TS2304:找不到名字'MapConstructor',錯誤TS2304:找不到名稱'Set'錯誤TS2304:找不到名稱' 'Iterator'錯誤TS1219:修飾器的實驗性支持是未來版本中可能發生變化的一項功能,可以設置'experimentalDecorators'選項來移除這個warni NG。但它仍然編譯。有沒有什麼辦法解決這一問題? – Dblock247

+0

這與您遷移到Gulp 4的原始問題並不真正相關。您應該打開一個新問題幷包含錯誤消息和Gulpfile的相關部分(或用於編譯TypeScript文件的任何部分)。包括一個最小的TypeScript文件以及可以重現錯誤的情況也不錯。 –

+0

@SvenSchoenung這是否意味着readme.io上的Gulp 4文檔不正確:https://gulp.readme.io/docs/gulpwatchglob-opts-fn?它說,第一個參數可以是數組:「單個glob或一組數組,指示要修改哪些文件。」 – revelt

0

朋友們,這是解決方法這個問題:

我們需要調用回調函數(任務和Anonimous

function electronTask(callbackA) 
{ 
    return gulp.series(myFirstTask, mySeccondTask, (callbackB) => 
    { 
     callbackA(); 
     callbackB(); 
    })(); 

}