Gulp对文件夹命名有问题

时间:2016-11-25 03:24:44

标签: gulp bower animate.css

我有一个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'

除了特定豁免外,我该如何解决?

1 个答案:

答案 0 :(得分:0)

你的问题是gulp.src()中的模式匹配两件事:

  1. 目录bower_component/animate.css
  2. 文件bower_component/animate.css/animate.css
  3. 然后你继续做rename({dirname: './css'}),这意味着你最终得到:

    1. 目录css/animate.css
    2. 文件css/animate.css
    3. 两者显然不能同时存在。

      您需要确保gulp.src()中的模式与任何目录本身(仅这些目录中的文件)不匹配。

      gulp.src()在内部使用globgulp.src()的选项会传递到glob。这意味着您可以使用glob的{​​{3}}来阻止目录匹配:

      return gulp.src(['bower_components/**/*.css','!bower_components/**/*.min.css'], {nodir:true})
        .pipe(rename({dirname: './css'}))
        .pipe(gulp.dest('dist'));
      
相关问题