Bir avuç projenin ötesinde büyüyen her mühendislik ekibi sonunda aynı problemle yüzleşiyor: onlarca veya yüzlerce kod tabanı tutarlı mı? Açık standartlar olmadan, her yeni proje karflake - farklı klasör yapıları, farklı bağımlılık versiyonları, farklı lint kuralları, farklı testler. Sonuç, bilişsel yük, doğrudan iş akışları oluşturmak için araçlarınıza yükselterek, Nx, Nx, Nx, monorepo, bu problemin tam olarak çözülmesi için tasarlanmıştır.
Ölçeğin Meydandaki Meydandaki Meydandaki Meydan Okuma
Tipik bir geliştirici akışında, kayıt ve kod incelemesi yoluyla elde edilir. Bir ekip, tercih edilen proje yapısını tarif eden bir wiki sayfası yazar, kütüphaneler için isimlendirme kongreleri ve gerekli bağımlılıklar. Yeni projeler eski bir proje ve yeniden ifade dosyaları kopyalayarak başlar.Bu kılavuz süreci kırılgandır: birisi bir yapılandırma dosyasına atlar veya yönergeleri farklı yorumlar.
Nx, bir programmatik ile bu reklam yaklaşımı değiştirir.Bir kopyalama ve geçmişleme yerine, geliştiriciler bir komut çalıştırır - 0:0) - ve takıma uygun bir proje alır. şablonun bir statik kopya değildir; bu, kullanıcı girişi için sorun yaratan ve yapılandırma otomatik olarak çalışır.Bu, manuel kurulum ile ürperticiler arasındaki mevcutluluğu ortadan kaldırır.
Nx Enables Consistency
Nx üç temel mekanizmayla tutarlılığa ulaşır: jeneratörler, paylaşılan konfigürasyonlar ve infaz kapıları. Jeneratörler (eski Nx belgelerinde "schematics" olarak adlandırılır veya dosyaları değiştirirler.CI boru hattınızda birincil araçtır.Sessiz yapılandırmalar için birincil araçtır.QT:2 kökde, ve DÖRT:3) Tüm projelerde "schematics" olarak adlandırılır.
Jeneratörler: Özel Şablonların Vakfı
Bir Nx jeneratörü, jeneratör tarafından geçirilen bir TypeScript (veya JavaScript) dosyasıdır, dosyaların bir setiyle Nx gemilerini arsa, Reaks, Node ve diğer çerçeveler için kendi modellerinizi oluşturabilirsiniz.
Örneğin, ekibinizin belirli bir klasör yapısını içerecek şekilde her ön uç kütüphaneyi gerektirdiğini hayal edin: aİLMİ 7) Satıcı ihracat için bir klasör, aENFLT:8) Reaktör bileşenleri için bir klasör ve bir opsiyonel dizileme için özel bir jeneratörü otomatik olarak inceleyebilir.
Nx'te Özel Jeneratörler Tasarlamak
Özel bir jeneratör oluşturmak dört üst düzey adım içerir: jeneratör arayüzünü tanımlamak, mantığı uygulamak, kayıt altına almak veya 03: 11) veya [[Dört|16|Dövme ağacına karşı test etmek. Aşağıda her adımı pratik tavsiyelerle genişletiyorum.
Adım 1: Schema ve Interface'i Tanımlayın
Jeneratörin kabul edeceğine karar vererek başlayın. Ortak seçenekler, [[Ücretsizler, [[GÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜ
2. Adım: Jeneratör Mantıkını Uygulayın
Jeneratör fonksiyonu bir İZFLT:18 alır ve doğrulanan ). Ağaçla etkileşime girmek için kullanılan kullanımları kullanın. Örneğin:
- [FONT:0]generateFiles[[[Döntgen: 1)) - Bir klasörden kopya dosyaları, şema değerleriyle substituting variables with schema values.
- [FONT:0)addProjectConfiguration[[Dönetici: 1 ) - iş alanında yeni proje kaydeder.
- [FONT:0] ([Dönetici))))))))))))))))))))))))))))))))
- [FONT:0)addDependenciesToPackageJson[Dönetici:0)[FONTD:0))
Şablon dosyaları jeneratörün yanında depolanır ve EJS sözel-polasyon için EJS sözlüğü kullanılır. Örneğin, aurFLT:24) şablonu kütüphane adı ile değiştirilmesi için koşullu bloklar veya döngüler içerebilir. Ayrıca, mantık basit ise, jeneratörün içinde ağacı manipüle etmeyi tercih edebilirsiniz.
Adım 3: Jeneratörleri kayıt edin
Jeneratörler, eklentilerin mevcut olduğu ve kodlarının kayıtlı olduğu durumlarda, jeneratörün (eski sürümler için) bulunduğu ve diğer geliştiriciler tarafından, bir yerel eklenti için, [[ENFLT:29) tarafından keşfedildi.
Adım 4: Jeneratörü test edin
Nx bir test yardımcı sağlıyor, [[DörtÜcretsizler için:Viaksiyonunuz sanal bir ağaç üzerinde jeneratörünüzü çağıran ve ortaya çıkan dosya yapısını iddia ediyor. Ayrıca test kenar vakaları: Kütüphane zaten varsa ne olur?
Nx ile Standartları Teşvik Etmek
şablonlar oluşturmak sadece resmin yarısıdır. Mükemmel jeneratörlerle bile, bir geliştirici, standartları kıran şekillerden sonra dosyaları değiştirebiliyor. Nx, her dosya için insan kodu incelemesine güvenmeksizin standartları otomatik olarak uygulamak mümkün kılar.
Paylaşılan Linting ve Formatting Constructs
İş Alanı kökünün ESLint ve Prettier konfigürasyon dosyaları iş alanında kök. Nx's ESLint, eklenti () hala proje düzeyindeki aşırılıklarını kullanarak iş alanı çapında kurallar tanımlamanıza izin verir. Örneğin, tüm kütüphanelerin bir isim alma kongresini takip etmesi gerekir (örneğin, ekFLT:34) Belirli bir süre boyunca izin verilen bir erişim için gerekli olan bir belgeye bağlı olarak sipariş edilen bir belgeye bağlı olarak, belirli bir süre boyunca erişim iznini yasaklayabilirsiniz.
CI Entegrasyonu Nx Etkilenen Komutlarla
Nx'ssFLT:40) komutları ([Dönetici: · · 4|0|) sadece değişmiş olan projeler üzerinde çalışır, büyük monorepos'u yeniden yapılandırır.Bir proje her PR'de çalıştırın.If a project doesn't linting, PR sadece özel linting kurallarınıza bağlı olmayan bir bağlılık.
Ortak Bağımlılık Versiyonları
Nx, kök yoluyla tek bir santimetreye bağlı olarak bağımlılıkları çözüyor. Bu, tüm projelerin aynı sürümünü, Reaktör veya Lodash – sürüm skew. Çünkü monorepos'u farklı çerçevelerle ortadan kaldırabilirsiniz, iş alanı düzeyinde bağımlılık yönetimini hala otomatik denetimlerle kullanabilirsiniz.
Bir kapı olarak Code Generation
Genellikle göz ardı edilen uygulama tekniği, yeni projelerin sadece jeneratörler aracılığıyla yaratılmasını gerektirir. Bazı Nx iş alanlarında, şablonları ve standartları sağlayan bir eklentiyi yayınlayabilirsiniz.Eğer bir geliştirici manuel olarak dosyaları yaratırsa, bağımlılık grafiğini kırarlar ve yanlış davranmaya zorlanırlar. jeneratörü yaparak, şablonları ve standartları doğru şekilde yapıyorsunuz.
Scaffolding'in Ötesinde: Standartlaştırma Mimari
Özel şablonlar ve lint kuralları sadece dosya yapısı ve kod stili değil aynı zamanda mimari desenleri de uygulanabilir. Bu, Nx'in daha basit sorgulama araçlarıyla kıyasladığı yerdir.
Kater Yapı Bir Sözleşme Olarak
Çalışma alanınız için standart bir hiyerarşiye karar verin. Ön uç monorepos için ortak bir model:
- [[Dönetici:0) Uygulamalar/[[Dönetici:0)
- [FONT=0]-[Döneticiler / [Dönler: 9|0|0|0|0|x|x|x|x|x|x|x|x|x|x|x|x|x|)|[tr|x|x|x|x|x|x|x|x|x|)|[tr||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- [FONT:0]libs /shared/utils[DÜT:1) – saf fayda işlevleri
- [FONT:0]libs /feature/dashboard[DÜT:1) – paniğe sahiptir
- [FONT:0]libs / feature/epts[Döncüler: 1 )
Özel jeneratörünüz bunu, bir kategoriye (örneğin, özellik, paylaşılan, veri erişimi) ve projeye uygun olarak yerleştirebilir, her geliştirici yapıyı içselleştirir, çünkü jeneratörü oluşturur.
Naming Conventions and Tags
Nx etiketleri, modül sınır kuralının kullandığı projelere ek olarak eklenir. Örneğin, bir geliştirici otomatik olarak "data-erişim" türünden oluşan bir kütüphane yaratırken, lint kuralının geri kalanının işlenmesine izin verilmez.
Ortak Desenler için Ortak Katop
Bina jeneratörlerini çapraz kesme kaygıları için düşünün: Ortaware, hata sınırları, API müşteri stubs, rota tanımları. Her geliştiricinin bir log hizmeti farklı şekilde uygulama yerine, bir jeneratör, takımın en iyi uygulamaları ile tutarlı bir giriş hizmeti oluşturur.
Standartları Ekibinize Bütünleme
Teknik çözümler sadece ekip onları kabul ederse etkilidir. Burada, geliştiricilerine karşı ezici olmadan özel şablonlar ve standartları çıkarmak için pratik adımlar vardır.
Küçük başlayın: Bir Jeneratör, One Rule
Her olası proje tipini günde bir şekilde üretmeye çalışmayın. Ekibinizin en yaygın proje türünü tanımlama - belirli bir katman veya yeni bir uygulama kabuğu için bir kütüphane - ve bunun için bir jeneratör oluşturmaya çalışın. Simultane, CI'de Prettier formatlandırma gibi.
Jeneratörlerinizi ve Konvansiyonları Belgeler
Jeneratörler, kimsenin var olduklarını bilmiyorsa işe yarıyor.Hazırda doğrulanmış bir sayfa listesi ile çalışma alanı kökünün kısa bir sayfa listesi tüm özel jeneratörleri, seçenekleri ve örnekleri. isimlendirme kontenjanları ve etiketleme tanımları ekleyin.
Discoverability için Nx Konsolu kullanın
[FONT:0]Nx Konsol[[DÜDÜT:1], çalışan jeneratörler için bir GUI sağlayan bir VS Kod ve JetBrainss. Tüm jeneratörleri otomatik olarak, özel eşyalarınız da dahil olmak üzere listeler. - tam olarak ne jeneratörü çalıştırmadan önce oluşturduğunu görebilirler ve şemalar şablonları benimseme bariyeri azaltır.
Geri bildirime dayalı
Jeneratör sonsuza kadar mükemmel değil. Birkaç hafta sonra geliştiricilerden geri bildirim toplamak: jeneratörü neyin eksik olduğunu? Üretimin üretimden sonra manuel olarak değiştirilmesi gerekiyor? jeneratörü güncelleyerek bu ağrı noktalarına hitap edin. Takım uygulamaları ile birlikte gelişen kod olarak jeneratörler. Nx bunları güncellemeyi kolaylaştırır çünkü jeneratör mantığı kontrol edilir ve test edilir.
Consistency Etkisini Ölçün
Özel şablonlarınız ve standartlarınız çalışıyorsa nasıl biliyorsunuz? Bu önde gelen göstergelere bakın:
- [FONT:0]Roslar zamanında geri çekilme: Yerel bir gelişim ortamı kurmak ve ilk özelliklerini yaratmak için yeni bir ekip üyesi nasıl uzun sürer? jeneratörler kurulumu yaparken, bu saatlerden dakikalar.
- [FONT:0)El yapılandırma değişiklikleri ile ilgili olarak yeniden yapılandırın:[Dönetici:0)Sisteme ayarlanan yollara uymayı, eksik bağımlılıkları veya ilk yaratımdan sonra klasörleri yeniden adlandırmayın.
- [FONT:0) kod incelemesinde cevap veren uyarılar: Eğer CI kapılarınız çalışırsa, geliştiriciler zaman önce lint ile ilgili yorumların sayısı azaltılmalıdır.
- [FONT:0)Faster PR inceleme döngüsü: [Dönetici: [Dönetici] Her proje aynı şekilde göründüğünde, yorumcular klasör düzenlemeleri veya adlandırmayı tartışmak yerine mantık ve iş kararlarına odaklanabilirler.
Bu metrikleri ekibinizle kayıt dışı olarak takip edin. Kod İklimi veya CI latency için bir pano kullanıyorsanız, objektif sayılar elde edemezsiniz. Hedef mükemmelliğe ulaşmaz, ancak sürekli olarak inconsistency tarafından kaynaklanan sürtünmeyi azaltır.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Bir monorepo'nun birleşme ve takım disiplininin sonucu bir kaza değildir; bu, organizasyonunuzun öğrenmeleri ve geliştirme aşamasına kadar yapılan özel şablonlar, standart olarak kopyalama ve geçmiş projelere giriş yapın.Ücretsiz yapılandırmalar ve yapılandırmalar ile onları inşa etmek, onları binadaki yatırım yapmak ve onları, iş alanınızın on yıl boyunca hızlı bir şekilde büyümek için kendi projelerinizi gerçekleştirerek, standart bir şekilde yönetmeye hazırlayacaktır.