0

我正在使用 gulp 4。当尝试使用 gulp 安装凉亭依赖项时,凉亭任务永远不会完成。下面的两个示例都实际安装了依赖项。

示例 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.

4

1 回答 1

1

您可以通过使用常规的“bower”包而不是“gulp-bower”来解决这个问题。有一个用于 bower 的编程 API,可以与本机 Promise 一起使用,以便与 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”并且你在 gulp 旁边安装了“babel-core”(本地安装很好),你就可以使用 ES6 进行 gulp。

于 2017-06-15T19:22:47.997 回答