Glob- en .gitignore-tester
Test glob-patronen en .gitignore-regels op een lijst paden en zie welke paden passen en welke regel dat deed.
Codevoorbeelden
Kopieer deze voorbeelden naar je eigen project. Ze gebruiken alleen de standaardbibliotheek van de taal, dus er hoeft niets geïnstalleerd te worden.
const pattern = '*.log'
const names = ['app.log', 'readme.md', 'error.log']
// * stays inside one path segment, ? is one character, everything else is literal.
const source = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^/]*').replace(/\?/g, '[^/]')
const matcher = new RegExp(`^${source}$`)
for (const name of names.filter((candidate) => matcher.test(candidate))) {
console.log(name)
}Wat het doet
Test glob-patronen en .gitignore-regels op een lijst paden. Elk pad krijgt een vinkje of kruisje, met ernaast het patroon dat het bepaalde, zodat je ziet waarom src/lib/util.test.ts wel of niet meetelt.
Zo gebruik je het
- Plak één pad per regel, of sleep een tekstbestand, in Paden.
- Schrijf één patroon per regel in Patronen. Regels die met
#beginnen zijn commentaar. - Kies Glob, Bash of Gitignore, en toon alle paden, alleen de treffers of alleen de missers.
- Kopieer het resultaat.
Voorbeelden
Met de patronen src/**/*.ts en !**/*.test.ts past het pad src/lib/util.ts en src/lib/util.test.ts niet, omdat de uitsluiting wint. Met de .gitignore-regels *.log en !keep.log wordt app.log genegeerd en keep.log niet.
Goed om te weten
*blijft binnen één map,**loopt door mappen heen, en?,[ab]en{a,b}werken zoals in picomatch.- Puntbestanden zoals
.envpassen alleen als je Verborgen bestanden meenemen aanzet of het patroon de punt noemt. - Bij Glob en Bash sluit een patroon dat met
!begint uit wat de andere patronen vonden. Bij Gitignore wint de laatste passende regel, zoals in Git. - Bash leest
**als een gewone*, zoals een shell zonderglobstar. - Paden worden als tekst vergeleken. Er wordt niets van een schijf gelezen.
Wat betekenen de drie syntaxen?
Glob is de picomatch-syntaxis die de meeste buildtools gebruiken: * blijft binnen één map, ** loopt door mappen heen, en accolades zoals {a,b}, klassen zoals [ab] en ? werken ook. Bash leest ** als een gewone *, zoals een shell zonder globstar. Gitignore volgt .gitignore-regels: een slash aan het eind betekent een map, een slash vooraan verankert aan de root, en een latere !-regel neemt terug wat een eerdere regel negeerde.
Veelgestelde vragen
Welke regel staat naast een pad?
Het eerste patroon dat past. Bij glob en bash toont een pad dat door een uitsluiting (een patroon met !) wegvalt die uitsluiting. Bij gitignore staat de regel die het pad negeerde.
Waarom past * niet op een bestand dat met een punt begint?
Globs slaan puntbestanden over tenzij het patroon de punt noemt. Zet Verborgen bestanden meenemen aan zodat * en ? ze wel vinden, zoals bash dotglob. Een .gitignore heeft die schakelaar niet.
Verstuurt deze tool mijn paden ergens naartoe?
Nee. Alles gebeurt in je browser. Wat je typt wordt nooit naar onze servers gestuurd.