Gulp 4 bower install不会触发完成

时间:2017-05-15 14:33:19

标签: bower gulp-4

我正在使用gulp 4.当尝试使用gulp安装bower依赖项时,bower任务永远不会完成。以下示例实际上都安装了依赖项。

示例1

var run = require('gulp-run');
gulp.task('bower', function(done) {
  run('./node_modules/.bin/bower install', {cwd: './temp'}).exec(function(err){
    if (err) throw err;

    done();
  });
});

这永远不会结束。它只是挂起。

示例2

var bower = require('gulp-bower');
gulp.task('bower', function() {
  return bower({cwd: './temp'});
});

这一个在完成后抛出The following tasks did not complete: bower. Did you forget to signal async completion?。但是因为它抛出,我无法继续我的gulp.series

1 个答案:

答案 0 :(得分:1)

你可以通过使用常规的'bower'包来解决这个问题,而不是'gulp-bower'。有一个用于凉亭的编程API,可以与本机承诺一起使用,以便与Gulp 4一起使用。

例如:

var gulp = require('gulp'),
    bower = require('bower');

gulp.task('bower:install', function() {
    return new Promise((resolve) => {
        bower.commands.install(undefined, undefined, {
            cwd: './temp'
        }).on('end', resolve);
    });
});

您会注意到我正在使用ES6箭头语法来表示匿名函数。只要您的gulpfile名为'gulpfile.babel.js'并且您已经安装了'babel-core'并且已经安装了gulp(本地安装就可以了),您可以使用ES6 for gulp。