Problème
J’ai une tâche style:clean
qui supprime des fichiers inutiles et ayant l’extension *.css
dans un dossier /style
. Le plugin Del fonctionne très bien pour ça, mais j’avais besoin de déclarer le scope des fichiers à cibler par la tâche en 2 entités distinctes :
- Le chemin vers le dossier
style/
et le format de fichier à cibler (config.paths.styles.dest + '*.css'
). - Une liste de fichiers à ignorer (
config.clean.style.ignore
).
Lors de mes tests infructueux, les fichiers ignorés étaient supprimés.
Solution
La méthode .unshift() permet l’insertion d’éléments en début de tableau.
Dans mon fichier gulpconf.json
:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "paths": { "styles": { "src": "src/style/", "dest": "style/" } }, "clean": { "style": { "ignore": ["!style/layout.css", "!style/layout.xul.all.css", "!style/skin-variables.css", "!style/skin.css"] } } } |
Si vous n’avez pas de fichiers à ignorer, laissez le tableau vide comme ceci:
1 2 3 4 5 6 7 |
{ "clean": { "style": { "ignore": [] } } } |
Dans mon gulpfile.js
:
1 2 3 4 5 |
gulp.task('style:clean', function(){ var arr = config.clean.style.ignore; arr.unshift(config.paths.styles.dest + '*.css'); del.sync(arr); }); |
Optimiser ce code en passant par une fonction
ATTENTION: ce code ne fonctionne pas. En réalité, si vous avez plusieurs tâches de clean (css, js, etc…), le lancement d’une seule de ces tâches va également faire le travail de toutes les autres …
Exemple: je lance gulp js:clean
et les fichiers CSS concernés par la tâche gulp css:clean
sont effacés également.
1 2 3 4 5 6 7 |
function gulpClean(type, format){ var arr = eval("config.clean."+type+".ignore"); arr.unshift(eval("config.paths."+type+"s.dest + '*."+format+"'")); del.sync(arr); } gulp.task('style:clean', gulpClean('style', 'css')); |