我有这样的目录结构。
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';
答案 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/**`]);
});