#node.js #gulp #del
#node.js #gulp #del
Вопрос:
У меня такая структура каталогов.
dist
|--client
|--assets
|--images
|--bower_components
|--server
|--.bower.json
Я пытаюсь очистить папку dist, за исключением папки assets / images.
Но когда я выполняю эту команду в режиме dryRun, она не удаляет файл assets / images. Но после его отключения он удаляет все файлы и папки.
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:
В официальной del
документации указано следующее:
Глобальный шаблон
**
соответствует всем дочерним элементам и родительскому.Так что это не сработает:
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/**`]);
});
Комментарии:
1. Идеальный. Спасибо 🙂