Povezivanje na VPN ne bi trebalo značiti uređivanje postavke registra u npm-u dvaput dnevno. Unos opsega u konfiguracijskoj datoteci na razini projekta može poslati pakete tvrtke 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; usmjeravanje, vjerodajnice i prednost 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 temelju toga je li paket interni ili javni; vidi samo ime.

Zato datoteka ispod izražava dvije namjere u tri retka: javni paketi idu na javni registar, a paketi pod opsegom tvrtke idu na registar tvrtke 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 retka 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ši kolege nasljeđuju kroz repozitorij, pa bi trebala izražavati zajedničku politiku, a ne vaš osobni 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. Njezino uklanjanje čini stroj ovisnim o onome što kaže datoteka na razini korisnika, a to je upravo ona implicitna ovisnost koja daje različite rezultate na dva prijenosnika.

Linija opsega nije zamjenski znak. Ime izvan opsega nastavlja koristiti zadano, a to je ponašanje koje želite za svaku ovisnost koju niste sami napisali.

Provjerite u što se datoteka razrješava prije nego je potvrdite, koristeći privremeno ime paketa umjesto stvarne instalacije, da pogreš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 svugdje; on se i dalje pojavljuje u okruženju procesa, a naredba koja ispisuje konfiguraciju može ga otkriti.

Osigurajte 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 dobiva 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 vrijedi nije nužno vrijednost u datoteci koju ste upravo uredili. Postavke projekta, postavke korisnika, globalne postavke i varijable okruženja sve sudjeluju. Ta slojevitost je razlog zašto popravak radi na vašem stroju, a ne u koleginu 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 razini korisnika na razvojnom računalu 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 pogreš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.

Kontrolni popis 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 pogreške na tokenu.

Potvrdite da je privatni registar dostupan sa stroja 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 usmjeravanje od vaše ljuske.

Zatim potvrdite ponašanje na čistom izvlačenju bez keširanih paketa. Svježa instalacija jedini je test koji pokazuje što će novi kolega doživjeti.

Povezani članci