【问题标题】:gulp clean is not working in correct mannergulp clean 没有以正确的方式工作
【发布时间】:2016-10-22 15:41:14
【问题描述】:

我有这样的目录结构。

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

我正在尝试清理 dist 文件夹,但 assets/images 文件夹除外。

但是当我在 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';

【问题讨论】:

    标签: node.js gulp del


    【解决方案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/**`]);
    });
    

    【讨论】:

    • 完美。谢谢:)
    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多