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 en files contenant un tableau de TRUE et FALSE valeurs. filter correctement mis files 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.
InformationsquelleAutor Jesse | 2012-09-28