2016-10-22 41 views
0

我有這樣的目錄結構。gulp clean無法正常工作

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'; 

回答

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/**`]); 
}); 
+0

完美。謝謝 :) –