grunt (minimatch/glob) l'exclusion des dossiers
J'ai une situation où je suis en train d'utiliser grunt à de la poussière d'une base de code, à l'exclusion des dossiers spécifiques.
grunt utilise minimatch (similaire à bsdglob) sous le capot de faire correspondre les fichiers, mais je n'arrive pas à comprendre comment faire un .gitignore style exclure d'un dossier.
J'aimerais intégrer ce:
ignoreme
et correspondant à ces:
/folder/path/here/to/something/ok.js
/another/folder/path.js
/test.js
mais ne pas correspondre à ce:
/folder/ignoreme/something.js
/folder/path/here/to/ignoreme/metoo/file.js
Cela va correspondre à tout, y compris ignoreme:
/**/*.js
Alors j'ai pensé que je pourrais faire quelque chose comme:
/**/!(ignoreme)/**/*.js
mais qui correspond à des fichiers dans les ignoreme dossier.
Je suis habitué à regexes, mais n'arrive pas à comprendre comment répéter un dessin ou quelque chose ici - j'ai aussi essayé des trucs comme:
/(!(ignoreme)|*)*/*.js
en espérant que le conteneur de le répéter, mais cela ne fonctionne pas, il a juste ne correspondent tout.
De toute façon de passer un regex pour grunt les chemins de fichiers, ou de faire ce travail pour moi?
Mise à jour:
Voici comment je suis actuellement aux prises avec ce problème:
var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
return !pattern.test(f)
})
Je serais toujours intéressé si le dossier exclut sont possibles dans minimatch.
- À l'aide de
map
enfiles
contenant un tableau deTRUE
etFALSE
valeurs.filter
correctement misfiles
de constituer une liste filtrée des chemins. - Vous avez raison, doit être tapé dans la nuit. Mise à jour du code de l'échantillon de travail.
Vous devez vous connecter pour publier un commentaire.
Dans le développement de la version 0.4.0 un, le
grunt.file.expand
méthode prend désormais en charge les exclusions, et qui est un sans doute moins complexe que le sous-jacent minimatch correspondant de la bibliothèque. Cela est possible parce quegrunt.file.expand
accepte plusieurs modèles (alors que minimatch n'accepte qu'un seul).De le grognement.fichier.développez documentation:
Cela signifie que vous pouvez spécifier
['/**/*.js', '!**/ignoreme/**']
et alors que le premier modèle serait ajouter tous les.js
les fichiers de l'ensemble de résultats, le second modèle serait alors supprimer tous les/ignoreme/
des fichiers à partir de l'ensemble de résultats.Prendre un coup d'oeil à la grunt.fichier.match des tests unitaires si vous êtes vraiment curieux.
Notez que la version de grunt offrant cette fonctionnalité n'a pas été officiellement publié, mais si vous êtes intéressés à l'utiliser dans un projet, voir le Quand vais-je être en mesure d'utiliser dans le développement de la fonctionnalité "X"? entrée de la FAQ.
grunt watch --verbose
pour voir quels fichiers sont en train d'être regardé