Testeur de glob et .gitignore
Testez des motifs glob et des règles .gitignore sur une liste de chemins et voyez quels chemins correspondent et quelle règle s’applique.
Exemples de code
Copiez ces exemples dans votre propre projet. Chacun n'utilise que la bibliothèque standard du langage : il n'y a rien à installer.
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)
}Ce que fait l’outil
Teste des motifs glob et des règles .gitignore sur une liste de chemins. Chaque chemin est marqué comme correspondant ou non, avec le motif responsable à côté, pour voir pourquoi src/lib/util.test.ts est retenu ou non.
Comment l’utiliser
- Collez un chemin par ligne, ou déposez un fichier texte, dans Chemins.
- Écrivez un motif par ligne dans Motifs. Les lignes qui commencent par
#sont des commentaires. - Choisissez Glob, Bash ou Gitignore, puis affichez tous les chemins, seulement les correspondances ou seulement les non-correspondances.
- Copiez le résultat.
Exemples
Avec les motifs src/**/*.ts et !**/*.test.ts, le chemin src/lib/util.ts correspond et src/lib/util.test.ts non, car l’exclusion l’emporte. Avec les règles .gitignore *.log et !keep.log, app.log est ignoré et keep.log ne l’est pas.
Bon à savoir
*reste dans un dossier,**traverse les dossiers, et?,[ab]et{a,b}fonctionnent comme dans picomatch.- Les fichiers cachés comme
.envne correspondent que si vous activez Inclure les fichiers cachés ou si le motif nomme le point. - En Glob et Bash, un motif qui commence par
!exclut ce que les autres motifs ont trouvé. En Gitignore, la dernière règle qui correspond l’emporte, comme dans Git. - Bash lit
**comme un simple*, comme un shell sansglobstar. - Les chemins sont comparés comme du texte. Rien n’est lu sur un disque.
Que signifient les trois syntaxes ?
Glob est la syntaxe picomatch de la plupart des outils de build : * reste dans un dossier, ** traverse les dossiers, et les accolades comme {a,b}, les classes comme [ab] et ? fonctionnent aussi. Bash lit ** comme un simple *, comme un shell sans globstar. Gitignore suit les règles .gitignore : une barre finale désigne un dossier, une barre initiale ancre à la racine, et une règle ! ultérieure réinclut ce qu’une règle précédente ignorait.
Questions fréquentes
Quelle règle s’affiche à côté d’un chemin ?
Le premier motif qui correspond. En glob et bash, un chemin écarté par une exclusion (un motif commençant par !) affiche cette exclusion. En gitignore, c’est la règle qui l’a ignoré.
Pourquoi * ne correspond-il pas à un fichier commençant par un point ?
Les globs ignorent les fichiers cachés sauf si le motif nomme le point. Activez Inclure les fichiers cachés pour que * et ? les trouvent, comme bash dotglob. Un .gitignore n’a pas cet interrupteur.
Cet outil envoie-t-il mes chemins quelque part ?
Non. Tout se passe dans votre navigateur. Ce que vous saisissez n’est jamais envoyé à nos serveurs.