Structude de départ :
svgs/
fileA.svg
fileB.svg.bkp
spr-A.svg
dir1/
file1A.svg
file1B.svg
spr-dir2/
file2A.svg
file2B.svg
Structude souhaitée après la copie :
svgs/
fileA.svg
spr-A.svg
dir1/
file1A.svg
file1B.svg
Tache Gulp simplifiée :
gulp.task('svgs', (done) => {
return gulp.src([
'svgs/**/*',
'!svgs/**/*.bkp',
'!svgs/**/spr-*/',
'!svgs/**/spr-*/**/*',
])
.pipe(gulp.dest('svgs'));
});
Résultat : Le fichier spr-A.svg
a été retiré par la règle !svgs/**/spr-*/
alors que celui-ci
a été écrite de façon à n'exclure que les répertoires.
svgs/
fileA.svg
dir1/
file1A.svg
file1B.svg
Après quelques recherches, il semble que gulp.src
soit basé sur glob
mais contrairement à ce dernier,
gulp.src
ne tient pas compte du /
final pour faire la différence entre un fichier et un répertoire.
J'ai loupé un truc ?
Je pense qu'il faut que tu sois un peu plus spécifique pour ta première règle :
svgs/**/*.svg
Ensuite, tu peux aussi essayer de mettre tes exceptions d'abord et ensuite ceux que tu veux.
On a déjà eu ce genre de comportement, ce n'est pas dû à Gulp mais bien à Glob, qui est un peu idiot/illogique certaines fois.