2016-10-22 3 views
0

У меня есть структура каталогов, подобная этому.gulp clean не работает корректно

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

ответ

1

В offical del documentation гласит следующее:

Глоб модели ** матчи всех детей и родителей.

Так что это не будет работать:

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

Perfect. Благодаря :) –

Смежные вопросы