Å koble til VPN-en bør ikke bety å redigere npms registerinnstilling to ganger om dagen. En omfangspost i en konfigurasjonsfil på prosjektnivå kan sende selskapets pakker til ett register og alt annet til det offentlige, uten bytting og uten en overstyring som blir liggende igjen en fredag ettermiddag. Haken er at dette bare løser navngivningen; ruting, påloggingsdetaljer og konfigurasjonsforrang er tre separate ting som hver feiler på sin måte.

To navn, to mål

Et npm-pakkenavn har enten et omfang eller ikke. Et navn med omfang begynner med et at-tegn og en omfangsidentifikator, og det er den identifikatoren konfigurasjonen kan kartlegge. Ingenting annet ved pakken har betydning for kartleggingen. Registeret ser aldri en forespørsel basert på om pakken er intern eller offentlig; det ser bare et navn.

Så filen nedenfor uttrykker to intensjoner på tre linjer: offentlige pakker går til det offentlige registeret, og pakker under selskapets omfang går til selskapets register med et token for den verten.

registry=https://registry.npmjs.org/
@acme:registry=https://packages.corp.example/
//packages.corp.example/:_authToken=${NPM_TOKEN}

Bytt ut omfanget, verten og variabelnavnet med det organisasjonen faktisk tilbyr. Strukturen er det som betyr noe, ikke eksempelverdiene. To linjer konfigurasjon bærer hele policyen, og derfor er de verdt å forstå i stedet for å kopiere.

Hold kartleggingen og nettverket i hver sitt rom i hodet. En omfangspost kan ikke gjøre en utilgjengelig vert tilgjengelig, og en fungerende tunnel kan ikke fortelle npm hvilket register en pakke hører til.

Skriv filen i riktig rekkefølge

Sett prosjektfilen først i resonnementet ditt selv om npm leser flere filer. En .npmrc i prosjektmappen er den kollegene dine arver gjennom repositoriet, så den bør uttrykke den felles policyen og ikke ditt personlige token. Den filen er også den en gjennomgåer vil lese. Hold den liten nok til å gjennomgås med ett blikk.

La standardlinjen registry peke på det offentlige registeret med mindre organisasjonen har bestemt noe annet. Fjerner du den, blir maskinen avhengig av hva filen på brukernivå sier, og det er nettopp den typen implisitt avhengighet som gir ulike resultater på to laptoper.

Omfangslinjen er ikke et jokertegn. Et navn utenfor omfanget bruker fortsatt standarden, og det er oppførselen du vil ha for hver avhengighet du ikke har skrevet selv.

Kontroller hva filen løses til før du committer den, med et engangspakkenavn i stedet for en ekte installasjon, slik at en feil ikke koster noe.

Påloggingsdetaljer hører til en vert, ikke et prosjekt

Autentiseringsposter er knyttet til en registervert og, der registeret trenger det, en sti. Derfor begynner tokenlinjen med den doble skråstreken og verten i stedet for omfanget. Når du først ser verten på den plassen, slutter resten av linjen å se ut som vilkårlig tegnsetting. Det er en adresse, og tokenet er festet til den.

Å bruke en miljøvariabel holder det bokstavelige tokenet utenfor filen i repositoriet. Det gjør ikke tokenet usynlig overalt; det vises fortsatt i prosessmiljøet, og en kommando som skriver ut konfigurasjonen kan avsløre det.

Skaff variabelen gjennom den lokale eller CI-baserte påloggingsmekanismen organisasjonen godkjenner, og lim aldri inn et ekte token i et eksempel som kan bli kopiert til dokumentasjonen.

Hvis to registre er i spill, får hvert sitt eget oppslag. Én enkelt ukvalifisert tokeninnstilling er i beste fall tvetydig og i verste fall sendt til feil vert.

Når det gale registeret vinner

Konfigurasjon er lagdelt, og den gjeldende verdien er ikke nødvendigvis verdien i filen du nettopp redigerte. Prosjektinnstillinger, brukerinnstillinger, globale innstillinger og miljøvariabler deltar alle. Den lagdelingen er grunnen til at en rettelse virker på maskinen din og ikke i en kollegas container. Det er også grunnen til at den effektive verdien er verdt å skrive ut før du diskuterer den.

Miljøvariabelen er den vanlige synderen i CI, der en jobb setter registeret én gang og hvert senere steg arver det. Den nest vanligste er en fil på brukernivå på en utviklers maskin som overstyrer det repositoriet sier.

Skriv ut den effektive konfigurasjonen og det løste registeret for ett navn med omfang og ett uten omfang før du feilsøker noe annet. Hvis de to svarene er det du forventer, er problemet nettverket; hvis ikke, er problemet konfigurasjonen, og ingen VPN-jobb vil hjelpe.

Sjekkliste før du committer

Bekreft at omfangsnavnet samsvarer med pakkene som faktisk er publisert, at standardregisteret er eksplisitt, og at tokenlinjen navngir riktig vert. En skrivefeil i omfanget gir den merkeligste feilen av alle, fordi pakken løses fra det offentlige registeret og returnerer noen andres modul med samme navn. Sjekk navnet før du feilsøker tokenet.

Bekreft at det private registeret er tilgjengelig fra maskinen i den konteksten som kjører installasjonen, ikke bare fra nettleseren din. Den forskjellen betyr noe når en proxy eller en container har annen ruting enn skallet ditt.

Bekreft deretter oppførselen på en ren utsjekking uten hurtigbufrede pakker. En fersk installasjon er den eneste testen som viser hva en ny kollega vil oppleve.

Relaterte artikler