使用 Gulp 删除无效的父文件夹无效

Negating Parent Folder with Gulp Del not working

我 运行 遇到了一个问题,我的 build:cleanfolder 任务删除了父文件夹,尽管我否定了父文件夹以防止它被删除。

我使用以下文件夹结构:

Parent Folder
- gulp (gulp file/content)
- src (working dir)

这就是 build:cleanfolder 任务的样子:

gulp.task('build:cleanfolder', function() {
    del([
        '!ParentFolder',
        '!../',
        '!../gulp',
        '!../src',
        '../**'
        ], {force: true});
});

基本上 "../" 和 "ParentFolder" 都被取反了,但不知何故 del (https://www.npmjs.com/package/del) 仍然删除了父文件夹(和其他内容)。有没有其他方法可以防止这种情况发生,还是我遗漏了一些明显的东西?

编辑:不幸的是,将“../**”放在该列表的顶部也不起作用

您可以使用 node-globcwd 选项来指定当前工作目录。所有 globbing 模式都将与此目录相关:

gulp.task('build:cleanfolder', function() {
    del([
        '**',
        '!gulp/**',
        '!src/**',
        ], { force: true, cwd: '..' });
});

这将删除 ParentFolder 中的所有内容,但 srcgulp 文件夹及其各自的内容除外。

这是 Github 仓库给我的有效解决方案:

gulp.task('build:cleanfolder', function() {
  return del([               // Return the Promise!
        '../**',
        '!..',               // i.e. '../../ParentFolder'; Note: no trailing '/'!
        '!../gulp/**',       // exclude gulp and everything within
        '!../src/**',        // exclude src and everything within
        ], {
            force: true,
            //dryRun: true  // just for debugging
        }
  ) //.then(console.log);  // just for debugging
});