Neka npm bira registar po opsegu paketa, a ne VPN
Unos opsega šalje pakete kompanije na privatni registar, a sve ostalo ostavlja javnim. Rutiranje, vjerodajnice i prioritet su još tri odluke.
Povezivanje na VPN ne bi trebalo značiti uređivanje postavke registra u npm-u dva puta dnevno. Unos opsega u konfiguracijskoj datoteci na nivou projekta može poslati pakete kompanije na jedan registar, a sve ostalo na javni, bez prebacivanja i bez zaostalog nadjačavanja u petak poslijepodne. Kvaka je u tome što ovo rješava samo imenovanje; rutiranje, vjerodajnice i prioritet konfiguracije tri su odvojene stvari koje svaka na svoj način zakažu.
Dva imena, dvije destinacije
Ime npm paketa ili ima opseg ili ga nema. Ime s opsegom počinje znakom @ i identifikatorom opsega, a upravo taj identifikator konfiguracija može mapirati. Ništa drugo na paketu nije važno za mapiranje. Registar nikada ne vidi zahtjev na osnovu toga je li paket interni ili javni; vidi samo ime.
Zato datoteka ispod izražava dvije namjere u tri reda: javni paketi idu na javni registar, a paketi pod opsegom kompanije idu na registar kompanije s tokenom za taj host.
registry=https://registry.npmjs.org/
@acme:registry=https://packages.corp.example/
//packages.corp.example/:_authToken=${NPM_TOKEN}Zamijenite opseg, host i ime varijable onim što organizacija zaista pruža. Struktura je ono što je važno, a ne primjerne vrijednosti. Dva reda konfiguracije nose cijelu politiku, zato ih vrijedi razumjeti umjesto kopirati.
Držite mapiranje i mrežu u odvojenim odjeljcima u glavi. Unos opsega ne može učiniti nedostupan host dostupnim, a tunel koji radi ne može reći npm-u kojem registru paket pripada.
Napišite datoteku pravim redoslijedom
Stavite projektnu datoteku na prvo mjesto u svom razmišljanju iako npm čita nekoliko datoteka. .npmrc u direktoriju projekta je ona koju vaše kolege nasljeđuju kroz repozitorij, pa bi trebala izražavati zajedničku politiku, a ne vaš lični token. Ta datoteka je i ona koju će recenzent čitati. Držite je dovoljno malom da se pregleda jednim pogledom.
Ostavite zadanu liniju registry da pokazuje na javni registar osim ako organizacija nije odlučila drugačije. Njeno uklanjanje čini mašinu zavisnom od onoga što kaže datoteka na nivou korisnika, a to je upravo ona implicitna zavisnost koja daje različite rezultate na dva laptopa.
Linija opsega nije zamjenski znak. Ime izvan opsega nastavlja koristiti zadano, a to je ponašanje koje želite za svaku zavisnost koju niste sami napisali.
Provjerite na šta se datoteka razrješava prije nego je potvrdite, koristeći privremeno ime paketa umjesto stvarne instalacije, da greška ništa ne košta.
Vjerodajnice pripadaju hostu, a ne projektu
Unosi provjere autentičnosti vezani su za host registra i, gdje registru to treba, za putanju. Zato linija tokena počinje dvostrukom kosom crtom i hostom, a ne opsegom. Kad vidite host na tom mjestu, ostatak linije prestaje izgledati kao proizvoljna interpunkcija. To je adresa, a token je prikačen na nju.
Korištenje varijable okruženja drži doslovni token izvan datoteke u repozitoriju. To ne čini token nevidljivim svuda; on se i dalje pojavljuje u okruženju procesa, a naredba koja ispisuje konfiguraciju može ga otkriti.
Obezbijedite varijablu kroz bilo koji lokalni ili CI mehanizam vjerodajnica koji organizacija odobri, i nikada ne lijepite stvarni token u primjer koji bi mogao biti kopiran u dokumentaciju.
Ako su u igri dva registra, svaki dobija svoj unos. Jedna nekvalificirana postavka tokena u najboljem je slučaju dvosmislena, a u najgorem poslana na pogrešan host.
Kada pogrešan registar pobijedi
Konfiguracija je slojevita, a vrijednost koja važi nije nužno vrijednost u datoteci koju ste upravo uredili. Postavke projekta, postavke korisnika, globalne postavke i varijable okruženja sve učestvuju. To slojevitost je razlog zašto popravka radi na vašoj mašini a ne u koleginoj kontejneru. To je i razlog zašto efektivnu vrijednost vrijedi ispisati prije nego se o njoj raspravljate.
Varijabla okruženja je uobičajeni krivac u CI-ju, gdje posao jednom postavi registar i svaki kasniji korak ga naslijedi. Drugi najčešći je datoteka na nivou korisnika na razvojnom računaru koja nadjačava ono što repozitorij kaže.
Ispišite efektivnu konfiguraciju i razriješeni registar za jedno ime s opsegom i jedno bez opsega prije nego otklanjate greške na bilo čemu drugom. Ako su ta dva odgovora ono što očekujete, problem je mreža; ako nisu, problem je konfiguracija i nikakav rad na VPN-u neće pomoći.
Kontrolna lista prije potvrde
Potvrdite da ime opsega odgovara paketima koji su zaista objavljeni, da je zadani registar eksplicitan i da linija tokena imenuje ispravan host. Tipfeler u opsegu proizvodi najčudniji kvar od svih, jer se paket razrješava s javnog registra i vraća tuđi modul istog imena. Provjerite ime prije nego otklanjate greške na tokenu.
Potvrdite da je privatni registar dostupan s mašine u kontekstu koji pokreće instalaciju, a ne samo iz vašeg preglednika. Ta razlika je važna kada proxy ili kontejner ima drugačije rutiranje od vaše ljuske.
Zatim potvrdite ponašanje na čistom izvlačenju bez keširanih paketa. Svježa instalacija jedini je test koji pokazuje šta će novi kolega doživjeti.