Naj npm izbere register glede na scope paketa, ne glede na VPN
Vnos scope pošlje pakete podjetja v zasebni register, vse ostalo pa pusti javno. Usmerjanje, poverilnice in prednost so še tri odločitve.
Povezava VPN ne bi smela pomeniti dvakratnega dnevnega urejanja nastavitve registra v npm. Vnos scope v konfiguracijski datoteki na ravni projekta lahko pošlje pakete podjetja v en register, vse ostalo pa v javnega, brez preklapljanja in brez prepisa, ki bi ostal za petkovo popoldne. Težava je v tem, da to reši samo poimenovanje; usmerjanje, poverilnice in prednost konfiguracije so tri ločene stvari, ki vsaka zataji na svoj način.
Dve imeni, dva cilja
Ime paketa npm ima scope ali pa ga nima. Ime s scope se začne z znakom at-sign in identifikatorjem scope, in prav ta identifikator lahko konfiguracija preslika. Za preslikavo ni pomembno nič drugega o paketu. Register nikoli ne vidi zahteve glede na to, ali je paket notranji ali javen; vidi samo ime.
Spodnja datoteka torej izraža dva namena v treh vrsticah: javni paketi gredo v javni register, paketi pod scope podjetja pa v register podjetja z žetonom za tega gostitelja.
registry=https://registry.npmjs.org/
@acme:registry=https://packages.corp.example/
//packages.corp.example/:_authToken=${NPM_TOKEN}
Zamenjajte scope, gostitelja in ime spremenljivke s tem, kar organizacija dejansko ponuja. Pomembna je struktura, ne vzorčne vrednosti. Dve vrstici konfiguracije nosita celotno politiko, zato se ju splača razumeti, namesto da bi ju kopirali.
Preslikavo in omrežje imejte v glavi v ločenih predalih. Vnos scope ne more narediti nedosegljivega gostitelja dosegljivega, delujoč tunel pa npm ne more povedati, kateremu registru paket pripada.
Datoteko napišite v pravem vrstnem redu
V svojem razmišljanju postavite projektno datoteko na prvo mesto, čeprav npm bere več datotek. .npmrc v projektni mapi je tista, ki jo vaši sodelavci podedujejo prek repozitorija, zato bi morala izražati skupno politiko in ne vašega osebnega žetona. Ta datoteka je tudi tista, ki jo bo prebral pregledovalec. Naj bo dovolj majhna, da jo je mogoče pregledati na en pogled.
Pustite privzeto vrstico registry, da kaže na javni register, razen če se organizacija ni odločila drugače. Če jo odstranite, bo stroj odvisen od tega, kar pravi datoteka na ravni uporabnika, kar je natanko tista vrsta implicitne odvisnosti, ki daje različne rezultate na dveh prenosnikih.
Vrstica scope ni nadomestni znak. Ime zunaj scope še naprej uporablja privzeto vrednost, kar je vedenje, ki ga želite za vsako odvisnost, ki je niste napisali sami.
Pred potrditvijo preverite, na kaj se datoteka razreši, in uporabite začasno ime paketa namesto prave namestitve, da napaka nič ne stane.
Poverilnice pripadajo gostitelju, ne projektu
Vnosi za preverjanje pristnosti so vezani na gostitelja registra in, kjer register to potrebuje, na pot. Zato se vrstica z žetonom začne z dvojno poševnico in gostiteljem, ne s scope. Ko enkrat vidite gostitelja na tem mestu, preostanek vrstice ne izgleda več kot naključno ločilo. To je naslov in žeton je pritrjen nanj.
Uporaba spremenljivke okolja ohrani dobesedni žeton zunaj datoteke v repozitoriju. Ne naredi žetona nevidnega povsod; še vedno se pojavi v okolju procesa in ukaz, ki izpiše konfiguracijo, ga lahko razkrije.
Spremenljivko zagotovite prek katerega koli lokalnega ali CI mehanizma poverilnic, ki ga organizacija odobri, in nikoli ne prilepite pravega žetona v primer, ki bi ga lahko kopirali v dokumentacijo.
Če sta v igri dva registra, vsak dobi svoj vnos. Ena sama nekvalificirana nastavitev žetona je v najboljšem primeru dvoumna, v najslabšem pa poslana napačnemu gostitelju.
Ko zmaga napačni register
Konfiguracija je večplastna in veljavna vrednost ni nujno vrednost v datoteki, ki ste jo pravkar uredili. Sodelujejo nastavitve projekta, uporabnika, globalne nastavitve in spremenljivke okolja. Zaradi tega slojenja popravek deluje na vašem stroju in ne v sodelavčevem vsebniku. Tudi zato je veljavno vrednost vredno izpisati, preden se o njej prepirate.
Običajni krivec v CI je spremenljivka okolja, kjer opravilo enkrat nastavi register in vsak naslednji korak ga podeduje. Drugi najpogostejši je datoteka na ravni uporabnika na razvijalčevem stroju, ki prepiše tisto, kar pravi repozitorij.
Izpišite veljavno konfiguracijo in razrešeni register za eno ime s scope in eno brez njega, preden razhroščujete karkoli drugega. Če sta ta dva odgovora takšna, kot jih pričakujete, je težava v omrežju; če nista, je težava v konfiguraciji in nobena količina dela na VPN ne bo pomagala.
Kontrolni seznam pred potrditvijo
Potrdite, da se ime scope ujema z dejansko objavljenimi paketi, da je privzeti register izrecen in da vrstica z žetonom navaja pravega gostitelja. Tipkarska napaka v scope povzroči najčudnejšo okvaro od vseh, ker se paket razreši iz javnega registra in vrne modul nekoga drugega z istim imenom. Preverite ime, preden razhroščujete žeton.
Potrdite, da je zasebni register dosegljiv s stroja v kontekstu, ki izvaja namestitev, ne le iz vašega brskalnika. Ta razlika je pomembna, ko ima proxy ali vsebnik drugačno usmerjanje kot vaša lupina.
Nato potrdite vedenje na čistem checkoutu brez predpomnjenih paketov. Sveža namestitev je edini test, ki pokaže, kaj bo doživel nov sodelavec.