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 match:
/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
Ceci correspondra à tout, y compris ignoreme:
/**/*.js
J'ai donc pensé que je pouvais 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 pour 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.