gulp clean工作不正常

时间:2016-10-22 15:41:14

标签: node.js gulp del

我有这样的目录结构。

dist
|--client
   |--assets
      |--images
   |--bower_components
|--server
|--.bower.json

我正在尝试清除dist文件夹,但资源/图像文件夹除外。

但是当我在dryRun模式下执行此命令时,它不会删除资产/图像文件。但是在禁用它之后,它会删除所有文件和文件夹。

gulp.task('clean:dist', () => {
   del.sync([
    `${paths.dist}/!(.git*|.openshift|Procfile)**`,
     `${paths.dist}/client/**`,
    `!${paths.dist}/client/assets`,
    `!${paths.dist}/client/assets/**`], {
    //dryRun: true
  });
  //console.log('dELETE FIELSE ARE: ' + JSON.stringify(value));
});

使用常数的值为:

${paths.dist} ='dist';

1 个答案:

答案 0 :(得分:1)

offical del documentation声明如下:

  

glob模式**匹配所有子项和父项。

     

所以这不起作用:

del.sync(['public/assets/**', '!public/assets/goat.png']);
     

您还必须明确忽略父目录:

del.sync(['public/assets/**', '!public/assets', '!public/assets/goat.png']);

在您的情况下,您删除dist/client/**,其中包含dist/client目录本身。如果您忽略dist/client/assets/**dist/client目录仍会被删除。

您需要明确忽略dist/client目录:

gulp.task('clean:dist', () => {
   del.sync([
    `${paths.dist}/!(.git*|.openshift|Procfile)**`,
    `${paths.dist}/client/**`,
    `!${paths.dist}/client`,
    `!${paths.dist}/client/assets/**`]);
});