Salta al contenuto principale

Usare un registro privato

Configurare un registro privato è possibile in alcuni modi, vediamoli tutti. I seguenti comandi potrebbero esser differenti in base al gestore del pacchetto in uso.

npm (5.x, 6.x)

Per impostare il registro nel file .npmrc usa quanto segue:

npm set registry http://localhost:4873/

Se vuoi usarne uno singolo, usa --registry dopo il comando necessario.

npm install --registry http://localhost:4873

Scrivilo tu stesso definendo nel tuo .npmrc un campo del registro.

.npmrc
registry=http://localhost:4873

Poiché npm@5.x ignora il campo risolvi definito nei file di blocco, mentre pnpm@4.x e yarn@1.x fanno l'opposto.

O un publishConfig nel tuo package.json

{
"publishConfig": {
"registry": "http://localhost:4873"
}
}

Usando il publishConfig le precedenti due opzioni sarebbero ignorate, usa quest'opzione solo se vuoi assicurarti che il pacchetto non stia venendo pubblicato da qualsiasi altra parte.

Se stai usando npm@5.4.x o npm@5.5.x, ci sono dei problemi noti con token, sei pregato di aggiornare alla 6.x o tornare alla npm@5.3.0.

SSL e certificati

Usando Verdaccio sotto SSL senza un certificato valido, definendo strict-ssl nel tuo file di configurazione è necessario altrimenti otterrai gli errori Errore SSL: SELF_SIGNED_CERT_IN_CHAIN.

npm non supporta più i certificati non validi dal 2014.

npm config set ca ""
npm config set strict-ssl false

npm (7.x)

npm v7.0.0 è più rigido con il nuovo file di blocco v2. Se hai mischiato i campi risolti nel tuo file di blocco, ad esempio, avendo questo nel tuo file di blocco:

{
"nome": "npm7",
"versione": "1.0.0",
"lockfileVersion": 2,
"richiede": true,
"pacchetti": {
"": {
"versione": "1.0.0",
"licenza": "ISC",
"dipendenze": {
"lodash": "4.17.20",
"underscore": "^1.11.0"
}
},
..... // rimosso per semplicità
},
"dipendenze": {
"lodash": {
"versione": "4.17.20",
"risolto": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
"integrità": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
},
"underscore": {
"versione": "1.11.0",
"risolto": "http://localhost:4873/underscore/-/underscore-1.11.0.tgz",
"integrità": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw=="
}
}
}

Eseguire npm i --registry https://registry.npmjs.org o usare .npmrc fallirà la tua installazione.

yarn

Yarn (1.x)

Sappi che le configurazioni npm sono valide sulla versione classica

La versione classica può riconoscere il file .npmrc, ma fornisce anche il proprio file di configurazione denominato .yarnrc.

Per configurare un registro, crea un file e definiscine uno.

// .yarnrc
registry "http://localhost:4873"

Usando questa versione dovresti abilitare always-auth nella tua configurazione, eseguendo:

npm config set always-auth true

yarn@1.x non invia l'intestazione dell'autorizzazione su yarn install se i tuoi pacchetti richiedono l'autenticazione, abilitare always-auth forzerà yarn a farlo a ogni richiesta.

Yarn Berry (>=2.x)

Yarn berry non riconosce più --registry o il file .npmrc.

Per definire un registro devi usare il .yarnrc.yml posizionato nel root del tuo progetto o la configurazione globale.

Quando pubblichi un pacchetto dev'esser usato `, tieni a mente che il publishConfig.registrynelpackage.json` sovrascriverà questa configurazione.

// .yarnrc.yml
npmRegistryServer: "http://localhost:4873"

unsafeHttpWhitelist:
- localhost

unsafeHttpWhitelist è necessario solo se non usi https con un certificato valido.

Usare gli ambiti è anche possibile e più segmentato, puoi definire un ambito in pari del token se richiesto.

npmRegistries:
"https://registry.myverdaccio.org":
npmAlwaysAuth: true
npmAuthToken: <TOKEN>
npmScopes:
my-company:
npmRegistryServer: https://registry.myverdaccio.org
npmPublishRegistry: https://registry.myverdaccio.org

per accedere tramite CLi usa:

yarn npm login --scope my-company

pnpm

Questo include le serie 4.x e 5.x.

pnpm riconosce di default la configurazione al .npmrc e anche il valore di --registry, non c'è differenza nell'implementazione.