使用Gulp Del否定父文件夹不起作用

时间:2016-02-20 21:44:17

标签: javascript gulp build-tools

我遇到了一个问题,我的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)仍然删除父文件夹(和其他内容)。有没有其他方法可以防止这种情况,或者我错过了一些明显的东西?

编辑:输入' ../**'不幸的是,在该列表之上并没有工作

2 个答案:

答案 0 :(得分:1)

您可以使用node-glob的{​​{3}}选项指定当前工作目录。所有通配模式都与此目录相关:

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

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

答案 1 :(得分:0)

这是我从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
});