Ich habe eine Situation, in der ich versuche, eine Codebasis mit Grunzen zu fusseln, mit Ausnahme bestimmter Ordner.
grunt verwendet minimatch (ähnlich wie bsdglob) unter der Haube, um Dateien abzugleichen, aber ich kann anscheinend nicht herausfinden, wie ein .gitignore-Stil einen Ordner ausschließt.
Ich möchte dies aufnehmen:
ignoreme
und passen Sie diese zusammen:
/folder/path/here/to/something/ok.js
/another/folder/path.js
/test.js
aber nicht mit diesen übereinstimmen:
/folder/ignoreme/something.js
/folder/path/here/to/ignoreme/metoo/file.js
Dies wird zu allem passen, einschließlich Ignoranz:
/**/*.js
Also dachte ich mir, ich könnte so etwas tun:
/**/!(ignoreme)/**/*.js
aber das stimmt mit Dateien im ignoreme-Ordner überein.
Ich bin an Regexe gewöhnt, kann aber anscheinend nicht herausfinden, wie man ein Muster oder etwas hier wiederholt - ich habe auch Dinge ausprobiert wie:
/(!(ignoreme)|*)*/*.js
Ich hoffe, der Container würde sich wiederholen, aber das funktioniert nicht. Er passt einfach nicht zu allem.
Gibt es eine Möglichkeit, entweder einen regulären Ausdruck an grunzende Dateipfade zu übergeben oder diese Funktion für mich zu nutzen?
Aktualisieren:
So gehe ich derzeit mit diesem Problem um:
var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
return !pattern.test(f)
})
Es würde mich immer noch interessieren, ob Ordnerausschlüsse in Minimatch möglich sind.
map
isfiles
enthält ein Array vonTRUE
undFALSE
Werten.filter
wird korrektfiles
als Liste der gefilterten Pfade festgelegt.