使用 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-glob
的 cwd
选项来指定当前工作目录。所有 globbing 模式都将与此目录相关:
gulp.task('build:cleanfolder', function() {
del([
'**',
'!gulp/**',
'!src/**',
], { force: true, cwd: '..' });
});
这将删除 ParentFolder
中的所有内容,但 src
和 gulp
文件夹及其各自的内容除外。
这是 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
});
我 运行 遇到了一个问题,我的 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-glob
的 cwd
选项来指定当前工作目录。所有 globbing 模式都将与此目录相关:
gulp.task('build:cleanfolder', function() {
del([
'**',
'!gulp/**',
'!src/**',
], { force: true, cwd: '..' });
});
这将删除 ParentFolder
中的所有内容,但 src
和 gulp
文件夹及其各自的内容除外。
这是 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
});