Connessione il progetto npm ai feed di Azure Artifacts
Articolo
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts consente agli sviluppatori di pubblicare e installare vari tipi di pacchetto da feed e registri pubblici, ad esempio npmjs.com. Per eseguire l'autenticazione con Azure Artifacts, è necessario configurare il file di configurazione npm.
Questo file contiene URL e credenziali del feed usati da npm, che offrono opzioni per personalizzare il comportamento del client npm, ad esempio la configurazione di proxy, la definizione dei percorsi predefiniti dei pacchetti o la configurazione di feed di pacchetti privati. Il file con estensione npmrc si trova in genere nella home directory dell'utente, ma può anche essere creato a livello di progetto per eseguire l'override delle impostazioni predefinite. Modificando il file con estensione npmrc, gli utenti possono personalizzare l'esperienza npm per soddisfare i requisiti specifici.
Prerequisiti
Un'organizzazione Di Azure DevOps e un progetto. Creare un'organizzazione o un progetto, se non è già stato fatto.
Per le procedure consigliate, è consigliabile usare due file di configurazione separati. Il primo viene usato per l'autenticazione con Azure Artifacts, mentre il secondo viene archiviato in locale e contiene le credenziali.
Per configurare il secondo file, è sufficiente inserirlo nella home directory nel computer di sviluppo e includere tutte le credenziali del Registro di sistema. In questo modo, il client npm può accedere facilmente alle credenziali per l'autenticazione, consentendo di condividere il file di configurazione mantenendo al tempo stesso le credenziali protette.
La procedura seguente illustra come configurare il primo file di configurazione:
Nota
vsts-npm-auth non è supportato in Azure DevOps Server.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Artefatti e quindi selezionare Connessione da inserire.
Selezionare npm nel riquadro di spostamento a sinistra.
Se questa è la prima volta che si usa Azure Artifacts con npm, selezionare Recupera gli strumenti e seguire le istruzioni per installare i prerequisiti.
Seguire le istruzioni in Installazione di Project per connettersi al feed.
Aggiungere un file con estensione npmrc nella directory del progetto, nella stessa directory del file package.json e copiare il frammento di codice seguente.
Copiare il frammento di codice seguente nel file npmrc a livello di utente:
Feed con ambito organizzazione:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed con ambito progetto:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti.
Codificare il token di accesso personale appena generato come segue:
Eseguire il comando seguente in una finestra del prompt dei comandi e quindi incollare il token di accesso personale quando richiesto:
È anche possibile usare il comando seguente per convertire il token di accesso personale in Base 64.
Linux/Mac:
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Copiare il valore con codifica Base 64.
Sostituire entrambi i valori [BA edizione Standard 64_ENCODED_PERSONAL_ACCESS_TOKEN] nel file con estensione npmrc dell'utente con il token di accesso personale del passaggio 3.
Selezionare la raccolta e quindi passare al progetto.
Selezionare Artefatti e quindi selezionare Connessione da inserire.
Selezionare npm nel riquadro di spostamento a sinistra.
Se questa è la prima volta che si usa Azure Artifacts con npm, selezionare Recupera gli strumenti e seguire le istruzioni per installare i prerequisiti.
Seguire le istruzioni in Installazione di Project per configurare il file di configurazione.
Aggiungere un file con estensione npmrc nella directory del progetto, nella stessa directory del file package.json e copiare il frammento di codice seguente.
Copiare il frammento di codice seguente nel file npmrc a livello di utente:
Feed con ambito raccolta:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed con ambito progetto:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti.
Codificare il token di accesso personale appena generato come segue:
Eseguire il comando seguente in una finestra del prompt dei comandi e quindi incollare il token di accesso personale quando richiesto:
Sostituire entrambi i valori [BA edizione Standard 64_ENCODED_PERSONAL_ACCESS_TOKEN] nel file con estensione npmrc dell'utente con il token di accesso personale del passaggio 3.
Selezionare la raccolta e quindi passare al progetto.
Selezionare Artefatti e quindi selezionare Connessione da inserire.
Selezionare npm nel riquadro di spostamento a sinistra.
Se questa è la prima volta che si usa Azure Artifacts con npm, selezionare Recupera gli strumenti e seguire le istruzioni per installare i prerequisiti.
Seguire le istruzioni in Installazione di Project per configurare il file di configurazione.
Aggiungere un file con estensione npmrc nella directory del progetto, nella stessa directory del file package.json e copiare il frammento di codice seguente.
Copiare il frammento di codice seguente nel file npmrc a livello di utente:
Feed con ambito raccolta:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed con ambito progetto:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti.
Codificare il token di accesso personale appena generato come segue:
Eseguire il comando seguente in una finestra del prompt dei comandi e quindi incollare il token di accesso personale quando richiesto:
Sostituire entrambi i valori [BA edizione Standard 64_ENCODED_PERSONAL_ACCESS_TOKEN] nel file con estensione npmrc dell'utente con il token di accesso personale del passaggio 3.
Selezionare la raccolta e quindi passare al progetto.
Selezionare Artefatti e quindi selezionare Connessione da inserire.
Verrà visualizzata una nuova finestra. Nel riquadro di spostamento a sinistra selezionare npm.
Seguire le istruzioni per configurare i file con estensione npmrc del progetto e dell'utente .
Suggerimento
L'uso di più registri nei file con estensione npmrc è supportato con ambiti e origini upstream.
Autenticazione della pipeline
Per eseguire l'autenticazione con la pipeline, Azure Artifacts consiglia di usare l'attività di autenticazione npm.
Quando si usano strumenti di esecuzione attività come gulp o Grunt, è importante includere l'attività di autenticazione npm all'inizio della pipeline. Questa azione garantisce che le credenziali vengano inserite nel file npmrc del progetto e mantenute durante l'esecuzione della pipeline, consentendo ai passaggi successivi di accedere alle credenziali nel file di configurazione.
Passare al progetto, selezionare Pipeline e quindi selezionare la definizione della pipeline.
Selezionare Modifica per modificare la pipeline.
Selezionare + questa opzione per aggiungere una nuova attività alla pipeline.
Passare al progetto, selezionare Pipeline compilazioni> e quindi selezionare la definizione di compilazione.
Selezionare Modifica per modificare la pipeline di compilazione.
Selezionare questa opzione + per aggiungere una nuova attività alla pipeline di compilazione.
Cercare l'attività npm Authenticate e quindi selezionare Aggiungi.
Selezionare il file con estensione npmrc e quindi selezionare Salva e coda al termine.
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc ## Path to the npmrc file
customEndpoint: #Optional ## Comma-separated list of npm service connection names for registries from external organizations. For registries in your org, leave this blank
Nota
Per consentire alla pipeline di accedere al feed, assicurarsi che il ruolo del servizio di compilazione sia impostato su Feed e lettore upstream (collaboratore) nelle impostazioni del feed.
Nota
Se l'organizzazione usa un firewall o un server proxy, assicurarsi di consentire gli URL di dominio appropriati. Per informazioni dettagliate, vedere Indirizzi IP consentiti e URL di dominio.
Risoluzione dei problemi
vsts-npm-auth non è riconosciuto
Se si verifica l'errore seguente durante l'esecuzione del progetto:
Cmd: 'vsts-npm-auth' is not recognized as an internal or external command, operable program or batch file.
PowerShell: vsts-npm-auth : The term 'vsts-npm-auth' is not recognized as the name of a cmdlet, function, script file, or operable program.
È quindi probabile che la cartella dei moduli npm non sia stata aggiunta al percorso. Per risolvere questo problema, eseguire di nuovo l'installazione Node.js e assicurarsi di selezionare l'opzione Add to PATH .
In alternativa, è possibile aggiungere la cartella npm modules al percorso modificando la variabile PATH in %APPDATA%\npm nel prompt dei comandi o $env:APPDATA\npm in PowerShell.
Impossibile eseguire l'autenticazione
Se si verifica un errore E401: code E401 npm ERR! Unable to authenticate. Eseguire il comando con il vsts-npm-auth flag -F per ripetere l'autenticazione.
vsts-npm-auth -config .npmrc -F
Reimpostare vsts-npm-auth
Seguire questa procedura per reimpostare le credenziali vsts-npm-auth:
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere: https://aka.ms/ContentUserFeedback.