EditorConfig Oluşturucu
Deponun kök dizinindeki bir .editorconfig, bu projenin dosyalarını nasıl biçimlendirdiğini her modern IDE’ye bildirir ve tab mı boşluk mu tartışmasını dosya dosya çözer. Zor olan kısım genel blok değil, dile özel bölümlerdir: YAML girintide tab karakterini hiç kabul etmez, make boşlukla başlayan bir komut satırını reddeder ve CRLF ile kaydedilen bir kabuk betiği çalışmaz. Deponuzdaki dilleri seçtiğinizde bu oluşturucu her birinin ihtiyaç duyduğu bölümü yazar ve yanına o bölümün neden orada olduğunu açıklayan bir not koyar.
Bir .editorconfig nasıl oluşturulur
-
1
Deponuzdaki dilleri seçin
JavaScript, JSON, HTML ve CSS, YAML, Python, PHP, Go, Rust, Ruby, Java, Markdown, Makefile, kabuk betikleri ve Windows toplu iş dosyaları. İşaretlediğiniz her seçenek dosyaya bir bölüm ekler.
-
2
Her dosyanın devraldığı kuralları ayarlayın
Girinti stili ve boyutu, satır sonu, karakter kümesi, son satır sonu, satır sonundaki boşluklar ve satır uzunluğu sınırı. Bunlar en üstteki `[*]` bloğuna yazılır; aşağıdaki her bölüm yalnızca kendi dilinin gerçekten ihtiyaç duyduğu kuralı geçersiz kılar.
-
3
Her bölümün neden orada olduğunu okuyun
Dosyanın yanındaki tablo, yazılan her bölümü açıklar; böylece ekibinizin istemediklerini commit'lemeden önce çıkarabilirsiniz.
-
4
Deponun kök dizinine kopyalayın
Dosyayı `.gitignore` dosyanızın yanına `.editorconfig` adıyla kaydedin. Editörler açtığınız bir sonraki dosyada onu devreye alır; ne derleme adımı ne de eklenti ayarı gerekir.
.editorconfig ne işe yarar?
Bir projenin kök dizinindeki .editorconfig adlı dosya, biçimlendirme kurallarını bildirir. EditorConfig destekli editörler (her büyük IDE ve çoğu modern metin editörü) bir dosya açıldığında bu kuralları uygular. Arama, düzenlenen dosyadan başlayarak dizin ağacında yukarı doğru ilerler ve root = true yazan ilk dosyada durur.
Örnek çıktı
Varsayılan ayarlarla (boşluk, girinti boyutu 4, LF, utf-8) ve sizin için önceden işaretlenmiş iki bölümle oluşturucu şunu üretir:
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
[*.{md,markdown}]
trim_trailing_whitespace = false
[{Makefile,makefile,GNUmakefile,*.mk}]
indent_style = tab
Python, Go veya YAML kutusunu işaretleyin; ilgili bölüm aşağıda belirir ve o ekosistemin biçimlendiricisinin dayattığı kuralı baştan taşır.
Temel direktifler
| Direktif | Kabul edilen değerler | Notlar |
|---|---|---|
| root | true | Aramanın orada durması için proje kökünde ayarlayın |
| charset | latin1, utf-8, utf-8-bom, utf-16be, utf-16le | Genellikle utf-8 seçilir. Spesifikasyon bayt sırası işaretini (BOM) önermez; utf-16 çifti ise her dosya için geçerli olur ve çoğu derleme aracı bunu okuyamaz |
| end_of_line | lf, crlf, cr | Platformlar arası çalışma için lf; yalnızca Windows depoları için crlf |
| indent_style | space, tab | |
| indent_size | bir tam sayı veya tab | indent_style = tab ile yok sayılmaz: tab_width buna geri döner, yani bir tabın ne kadar geniş görüneceğini belirler |
| tab_width | bir tam sayı | Nadiren gerekir, çünkü varsayılanı indent_size değeridir |
| insert_final_newline | true, false | Dosyaları POSIX uyumlu tutar, diff gürültüsünü azaltır |
| trim_trailing_whitespace | true, false | Markdown için kapatın; orada satır sonundaki boşluklar satır sonu anlamına gelir |
| max_line_length | pozitif bir tam sayı veya unset | Çekirdek spesifikasyonda yer almaz; özellikler wikisinde tanımlıdır. Sınır istemiyorsanız 0 yazmak yerine satırı hiç yazmayın |
Stil kılavuzunu değil, derlemeyi bozan üç kural
Bir .editorconfig içindeki girdilerin çoğu tercihten ibarettir. Şu üçü değil ve dile özel bölüm tutmaya değmesinin nedeni de bunlar:
- YAML, girintide tab karakterine izin vermez. Bu bir ayrıştırma hatasıdır, lint uyarısı değil. Projeniz tab ile girinti yapıyorsa ve GitHub Actions iş akışlarınız, Docker Compose dosyalarınız ya da Kubernetes manifest dosyalarınız varsa, YAML bölümünün boşluğu geri zorlaması gerekir.
makegerçek bir tab ister, hem de her kuralın komut satırının başında. Boşluk kullanırsanızmissing separator. Stop.çıkar ve derleme durur.[{Makefile,makefile,GNUmakefile,*.mk}]bölümünün birkaç yazımı birden listelemesinin nedeni budur: EditorConfig dosya adlarını büyük/küçük harfe duyarlı eşleştirir ve depolarda hemMakefilehemmakefilebulunur.- CRLF ile kaydedilen bir kabuk betiği çalışmaz. Çekirdek, satır başı karakterini yorumlayıcı yolunun bir parçası olarak okur ve şuna benzer bir hata verir:
/bin/bash^M: bad interpreter: No such file or directory. Windows toplu iş dosyalarında sorun tam tersidir:cmd.exe,gotovecall :labelkomutlarını bayt konumuna göre arar, bu yüzden yalnızca LF içeren bir.batyanlış satıra atlayabilir veya hiç hata vermeden yarıda durabilir.
Bunlardan ikisini genel blok çözmek yerine kendisi yaratabilir; bu oluşturucunun onları kollamasının nedeni de budur. Tab seçip YAML bölümünü eklemezseniz ya da CRLF seçip kabuk betikleri bölümünü eklemezseniz, yazılan dosyada adları hiç geçmediği hâlde o dosyalar bozulur. Oluşturucu bunu çıktının üstünde söyler; böylece çöken bir pipeline size haber vermek zorunda kalmaz. Aynısı utf-16 karakter kümeleri için de geçerlidir: projedeki her dosya için geçerli olurlar ve make, kabuk yorumlayıcıları ile Python bu şekilde kaydedilmiş kaynak kodu okuyamaz.
Bu oluşturucunun yazdığı dil kuralları
| Dil veya dosya | Bölüm | Neyi neden ayarlar |
|---|---|---|
| JavaScript, TypeScript | *.{js,jsx,mjs,cjs,ts,tsx} |
2 boşluk, Prettier varsayılanı |
| JSON | *.{json,jsonc} |
2 boşluk, npm’in package.json dosyasına yazdığı genişlik |
| HTML, CSS, şablonlar | *.{html,htm,css,scss,sass,less,vue,svelte} |
2 boşluk; girintili Sass sözdiziminin ayrıştırılabilmesi için de zorunlu |
| YAML | *.{yml,yaml} |
2 boşluk; proje tab kullansa bile boşluk |
| Python | *.{py,pyi} |
4 boşluk, PEP 8 ve Black |
| PHP | *.php |
4 boşluk, PSR-12. WordPress tab, Drupal ise 2 boşluk kullanır |
| Go | {*.go,go.mod} |
Tab, çünkü gofmt tab ile girinti yapar |
| Rust | *.rs |
4 boşluk, rustfmt varsayılanı |
| Ruby | {*.rb,*.rake,Gemfile,Rakefile} |
2 boşluk, RuboCop varsayılanı |
| Java | *.java |
4 boşluk, Oracle’ın kuralları. Google’ın Java stili 2 kullanır |
| Markdown | *.{md,markdown} |
Satır sonundaki boşlukları korur; Markdown satır sonunu böyle yazar |
| Makefile | {Makefile,makefile,GNUmakefile,*.mk} |
make’in zorunlu kıldığı tab |
| Kabuk betikleri | *.{sh,bash,zsh} |
Projenin geri kalanı ne kullanırsa kullansın LF |
| Windows toplu iş | *.{bat,cmd} |
CRLF, çünkü cmd.exe etiketleri bayt konumuna göre arar |
Bu tabloda olmayana dikkat edin: satır uzunlukları. PEP 8 79 der, Black 88 der, PSR-12 esnek bir 120 der, rustfmt ise 100 der. Bunlardan herhangi birini dile özel bir bölüme yazmak, proje geneli için seçtiğiniz sınırı sessizce geçersiz kılardı. Bu yüzden oluşturucu max_line_length satırını yalnızca [*] bloğunda bırakır ve bu sayıları burada tutar; böylece onları bilerek uygulayabilirsiniz.
Editörünüz bunu destekliyor mu?
Yerleşik destek: VS Code, JetBrains IntelliJ ailesi, Visual Studio, Sublime Text, Xcode ve Notepad++. Vim, Emacs, Neovim ve birkaçı için küçük bir eklenti gerekir. Dosya düz INI biçiminde olduğundan linterlar ve biçimlendiriciler de okuyabilir; Prettier ile bazı dil sunucularının onunla uyumlu kalmasının yolu budur.
Sık Sorulan Sorular
Proje köküne, en üstünde root = true satırıyla koyun. Belirli yolları geçersiz kılmak için alt dizinlere ek .editorconfig dosyaları ekleyebilirsiniz; arama, düzenlenen dosyadan başlayarak ağaçta yukarı doğru ilerler ve bulduğu ilk root = true satırında durur.
Alana 0 yazın; oluşturucu max_line_length satırını dosyaya hiç koymaz. Bu özelliğin belgelenmiş değerleri pozitif sayılardır; bir de spesifikasyonun tamamında geçerli olan, üst bir dosyadan devralınan değeri iptal etmeye yarayan unset vardır. Burada en üst düzey dosyayı yazıyorsunuz, yani iptal edilecek bir şey yok ve satırın hiç bulunmaması da aynı şeyi söyler. Yazmamanız gereken şey, bu aracın eskiden yaptığı gibi max_line_length = 0 satırıdır: spesifikasyon eklentilere desteklenmeyen değerleri yok saymalarını söyler, dolayısıyla sıfırlık bir sınır aslında sınır değil, sessizce hiçbir şey yapmayan bir satırdır.
Hayır. EditorConfig; boşlukları ve satır sonlarını her editörde, siz kullanmasanız bile takım arkadaşlarınızın kullandıklarında da düzenler. Prettier ve dile özgü linterlar ise tırnak işaretleri, noktalı virgüller ve sondaki virgüller gibi daha derin stil kurallarını üstlenir. İkisi birbirini tamamlar; Prettier temel kurallar için .editorconfig dosyanızı zaten okur.
Çünkü YAML, girintide tab karakterine hiç izin vermez. Tab ile girintilenmiş bir iş akışı veya compose dosyası, herhangi bir araç onu görmeden ayrıştırma aşamasında hata verir. Oluşturucu diğer her yerde tab tercihinizi korur, yalnızca YAML bölümünü geçersiz kılar ve bunu yaptığında dosyanın üstünde size bildirir.
Depodaki Windows araçları bunu gerçekten gerektiriyorsa end_of_line = crlf ayarlayın. Genellikle daha iyi seçenek, burada lf kullanmak ve .gitattributes dosyasına * text=auto eklemektir; böylece git commit sırasında satır sonlarını normalleştirirken checkout her işletim sistemine uygun kalır.
Seçimleriniz dosyayı oluşturur ve adımlar arasında sayfa bağlantısında taşınır; böylece bir yapılandırmayı paylaşabilir veya yer imlerinize ekleyebilirsiniz. Sayfa oluşturulduktan sonra sunucularımızda hiçbir şey saklanmaz.
İlgili Araçlar
Dosya Boyutu Dönüştürücü
Bayt, KB, MB, GB, TB ve ikili IEC birimleri (KiB, MiB, GiB, TiB) arasında, ondalık ve ikiliyi dilediğiniz gibi birleştirerek dönüşüm yapın.
Kurgusal telefon numarası oluşturucu
Beş ülkede resmen ayrılmış aralıklardan 50 adede kadar kurgusal numara üretin.
Rastgele adres oluşturucu
Arayüz maketleri ve testler için üç basitleştirilmiş biçimde 1–20 adres benzeri kayıt oluşturun.
CSS Fiyat Tablosu Oluşturucu
HTML + CSS ile tek bir fiyat kartı oluşturun: paket adı, fiyat ve marka vurgu rengi. Kodu açılış sayfanıza kopyalayın.
Kodu görsele dönüştür
Kodu yapıştırın; tema, renkler, yazı boyutu, boşluk, başlık ve satır numaralarını ayarlayın, canvas önizlemesini kontrol edin ve PNG indirin. Sözdizimi vurgusu olmayan düz metin çizimi.
JSON Minifier
API yanıtlarında ve gömülü yapılandırmalarda payload boyutunu küçültmek için boşlukları, satır sonlarını ve yorumları kaldırarak JSON'u küçültün.
Araç diğer dillerde mevcuttur
- EditorConfig ジェネレーター [JA]
- EditorConfig-generator [NL]
- Generador de EditorConfig [ES]
- Trình tạo EditorConfig [VI]
- Gerador de EditorConfig [PT]
- Generator EditorConfig [ID]
- EditorConfig-Generator [DE]
- EditorConfig-generator [SV]
- مولد EditorConfig [AR]
- Generator EditorConfig [PL]
- EditorConfig 생성기 [KO]
- เครื่องมือสร้าง EditorConfig [TH]
- Générateur EditorConfig [FR]
- EditorConfig Generator [EN]
- Generatore EditorConfig [IT]
- Генератор EditorConfig [RU]
- EditorConfig 生成器 [ZH]