我正在使用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
。
发布于 2017-06-15 19:22:48
你可以通过使用常规的'bower‘包来解决这个问题,而不是使用’gulp bower‘。有一个用于bower的编程API,它可以与原生promises一起使用,以便与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箭头语法。你可以在gulp中使用ES6,只要你的gulp文件名为'gulpfile.babel.js‘,并且在gulp旁边安装了'babel-core’(本地安装就可以)。
https://stackoverflow.com/questions/43982166
复制