Glob ve .gitignore test aracı
Glob desenlerini ve .gitignore kurallarını bir yol listesinde sınayın; hangi yolların eşleştiğini ve hangi kuralın eşleştirdiğini görün.
Kod örnekleri
Bu örnekleri kendi projenize kopyalayın. Her biri yalnızca dilin standart kütüphanesini kullanır, bu yüzden kurulacak bir şey yoktur.
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)
}Ne yapar
Glob desenlerini ve .gitignore kurallarını bir yol listesinde sınar. Her yol eşleşiyor ya da eşleşmiyor diye işaretlenir, yanında sorumlu desenle birlikte; böylece src/lib/util.test.ts dosyasının neden içeride ya da dışarıda olduğunu görürsünüz.
Nasıl kullanılır
- Yollar bölmesine satır başına bir yol yapıştırın ya da bir metin dosyası bırakın.
- Desenler bölmesine satır başına bir desen yazın.
#ile başlayan satırlar yorumdur. - Glob, Bash ya da Gitignore seçin; tüm yolları, yalnızca eşleşenleri ya da yalnızca eşleşmeyenleri gösterin.
- Sonucu kopyalayın.
Örnekler
src/**/*.ts ve !**/*.test.ts desenleriyle src/lib/util.ts yolu eşleşir, src/lib/util.test.ts eşleşmez; çünkü dışlama kazanır. *.log ve !keep.log .gitignore kurallarıyla app.log yok sayılır, keep.log sayılmaz.
Bilmekte fayda var
*tek bir dizinde kalır,**dizinleri aşar;?,[ab]ve{a,b}picomatch’teki gibi çalışır..envgibi nokta dosyaları yalnızca Nokta dosyalarını dahil et açıkken ya da desen noktayı belirtirse eşleşir.- Glob ve Bash’te
!ile başlayan desen, diğer desenlerin bulduğunu dışlar. Gitignore’da Git’teki gibi eşleşen son kural kazanır. - Bash,
**ifadesiniglobstarolmayan bir kabuk gibi sıradan*olarak okur. - Yollar metin olarak eşleştirilir. Bir diskten hiçbir şey okunmaz.
Üç sözdizimi ne anlama gelir?
Glob, çoğu derleme aracının kullandığı picomatch sözdizimidir: * tek bir dizinde kalır, ** dizinleri aşar; {a,b} gibi süslü parantezler, [ab] gibi sınıflar ve ? de çalışır. Bash, ** ifadesini globstar olmayan bir kabuk gibi sıradan bir * olarak okur. Gitignore, .gitignore kurallarını izler: sondaki eğik çizgi dizini, baştaki eğik çizgi kök dizine sabitlemeyi belirtir ve sonraki bir ! kuralı önceki kuralın yok saydığını yeniden dahil eder.
Sık sorulan sorular
Bir yolun yanında hangi kural gösterilir?
Eşleşen ilk desen. Glob ve bash’te bir dışlama (! ile başlayan desen) yolu çıkarırsa o dışlama gösterilir. Gitignore’da yolu yok sayan kural gösterilir.
* neden nokta ile başlayan dosyayla eşleşmiyor?
Glob’lar, desen noktayı belirtmedikçe nokta dosyalarını atlar. * ve ? onları da bulsun diye Nokta dosyalarını dahil et seçeneğini açın; bash dotglob gibi. .gitignore’da böyle bir anahtar yoktur.
Bu araç yollarımı bir yere gönderiyor mu?
Hayır. Her şey tarayıcınızda olur. Yazdıklarınız sunucularımıza asla gönderilmez.