Glob- und .gitignore-Tester
Teste Glob-Muster und .gitignore-Regeln an einer Pfadliste und sieh, welche Pfade passen und welche Regel greift.
Codebeispiele
Kopieren Sie diese Beispiele in Ihr eigenes Projekt. Sie verwenden nur die Standardbibliothek der Sprache, es muss also nichts installiert werden.
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)
}Was es tut
Testet Glob-Muster und .gitignore-Regeln an einer Pfadliste. Jeder Pfad wird als passend oder nicht passend markiert, mit dem verantwortlichen Muster daneben, sodass du siehst, warum src/lib/util.test.ts drin oder draußen ist.
So benutzt du es
- Füge einen Pfad pro Zeile ein oder ziehe eine Textdatei in Pfade.
- Schreibe ein Muster pro Zeile in Muster. Zeilen mit
#am Anfang sind Kommentare. - Wähle Glob, Bash oder Gitignore und zeige alle Pfade, nur die Treffer oder nur die Nicht-Treffer.
- Kopiere das Ergebnis.
Beispiele
Mit den Mustern src/**/*.ts und !**/*.test.ts passt der Pfad src/lib/util.ts, src/lib/util.test.ts nicht, weil der Ausschluss gewinnt. Mit den .gitignore-Regeln *.log und !keep.log wird app.log ignoriert, keep.log nicht.
Gut zu wissen
*bleibt in einem Verzeichnis,**geht über Verzeichnisse hinweg, und?,[ab]und{a,b}funktionieren wie in picomatch.- Dotfiles wie
.envpassen nur, wenn du Dotfiles einbeziehen einschaltest oder das Muster den Punkt nennt. - Bei Glob und Bash schließt ein Muster mit
!am Anfang aus, was die anderen Muster fanden. Bei Gitignore gewinnt die letzte passende Regel, wie in Git. - Bash liest
**wie ein einfaches*, so wie eine Shell ohneglobstar. - Pfade werden als Text verglichen. Von einem Datenträger wird nichts gelesen.
Was bedeuten die drei Syntaxen?
Glob ist die picomatch-Syntax der meisten Build-Tools: * bleibt in einem Verzeichnis, ** geht über Verzeichnisse hinweg, und Klammern wie {a,b}, Klassen wie [ab] und ? funktionieren ebenfalls. Bash liest ** wie ein einfaches *, so wie eine Shell ohne Globstar. Gitignore folgt den .gitignore-Regeln: ein Schrägstrich am Ende meint ein Verzeichnis, einer am Anfang verankert an der Wurzel, und eine spätere !-Regel nimmt zurück, was eine frühere ignorierte.
Häufige Fragen
Welche Regel steht neben einem Pfad?
Das erste Muster, das passt. Bei Glob und Bash zeigt ein Pfad, den ein Ausschluss (ein Muster mit !) entfernt, diesen Ausschluss. Bei Gitignore steht die Regel, die ihn ignoriert hat.
Warum passt * nicht auf eine Datei, die mit einem Punkt beginnt?
Globs überspringen Dotfiles, außer das Muster nennt den Punkt. Schalte Dotfiles einbeziehen ein, damit * und ? sie finden, wie bash dotglob. Eine .gitignore hat diesen Schalter nicht.
Sendet dieses Tool meine Pfade irgendwohin?
Nein. Alles passiert in deinem Browser. Was du eingibst, wird nie an unsere Server gesendet.