我有一个gulp任务:
var provider = function (a) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve(a * 5);
}, 2000);
});
};
function makeProviders(num){
return [
function onResolved(){
return provider(num);
},
function onRejected(){
console.error('Dahm daniel.');
}
]
}
provider(5).then(...makeProviders(3)).then(function(val){
console.log('val => ', val);
});
适用于所有其他组件,但我想使用gulp.task('css-dependencies', function() {
return gulp.src(['bower_components/**/*.css','!bower_components/**/*.min.css'])
.pipe(rename({dirname: './css'}))
.pipe(gulp.dest('./'));
});
并通过bower添加将其放在名为animate.css
的文件夹中:
animate.css
导致gulp在重命名任务上失败:
错误:EISDIR:在目录上非法操作,在错误(本机)打开'〜/ css / animate.css'
除了特定豁免外,我该如何解决?
答案 0 :(得分:0)
你的问题是gulp.src()
中的模式匹配两件事:
bower_component/animate.css
bower_component/animate.css/animate.css
然后你继续做rename({dirname: './css'})
,这意味着你最终得到:
css/animate.css
css/animate.css
两者显然不能同时存在。
您需要确保gulp.src()
中的模式与任何目录本身(仅这些目录中的文件)不匹配。
gulp.src()
在内部使用glob
,gulp.src()
的选项会传递到glob
。这意味着您可以使用glob
的{{3}}来阻止目录匹配:
return gulp.src(['bower_components/**/*.css','!bower_components/**/*.min.css'], {nodir:true})
.pipe(rename({dirname: './css'}))
.pipe(gulp.dest('dist'));