Configurare npmrc del client

Azure DevOps Services | TFS 2018 | TFS 2017

Azure Artifacts è un'estensione per Azure DevOps Services e Azure DevOps Server che semplifica l'individuazione, l'installazione e la pubblicazione di diversi tipi di pacchetti. Vedere Iniziare a usare Azure Artifacts per altri dettagli.

Tutti Azure Artifacts feed richiedono l'autenticazione, quindi è necessario archiviare le credenziali per il feed prima di poter installare o pubblicare pacchetti. npm usa i file di configurazione con estensione npmrc per archiviare gli URL e le credenziali dei feed.

Dove sono i file con estensione npmrc?

Azure DevOps Services consiglia di usare due file con estensione npmrc:

  1. Un file con estensione npmrc deve essere insediato nella radice del repository Git adiacente all'package.jsdel progetto in.

    1. Nella pagina Pacchetti fare clic su Connessione feed

      Connessione per il feed in Azure Artifacts Devops di Azure

      Connessione feed TFS

    2. Selezionare npm.

    3. Selezionare Ottieni gli strumenti nell'angolo in alto a destra.

    1. Seguire i passaggi 1 e 2 per scaricare Node.js, npm e il provider di credenziali degli artefatti.

    2. Seguire le istruzioni nella sezione Project configurazione per configurare il progetto. Per pubblicare o ripristinare i pacchetti, vedere le sezioni Ripristina pacchetti e Pubblica pacchetti.

      Connessione per il feed DevOps servizi

    1. Seguire le istruzioni nelle sezioni Configurare Project e Ripristinare i pacchetti.

      Connessione feed server 2019 e 2020

    1. Seguire i passaggi 1 e 2 per scaricare Node.js, npm e il provider di credenziali degli artefatti.

    2. Seguire le istruzioni nella sezione Project configurazione per configurare il progetto. Per pubblicare o ripristinare i pacchetti, vedere le sezioni Ripristina pacchetti e Pubblica pacchetti.

      Connessione l'installazione del progetto TFS

  2. Nel computer di sviluppo si avrà anche un file con estensione npmrc in $HOME per sistemi Linux o Mac o $env. HOME per i sistemi win. Questo file con estensione npmrc deve contenere le credenziali per tutti i registri a cui è necessario connettersi. Il client NPM guarderà il file con estensione npmrc del progetto, individua il Registro di sistema e recupererà le credenziali corrispondenti da $HOME/.npmrc o $env. HOME/.npmrc. L'acquisizione delle credenziali verrà illustrata nella sezione successiva.

In questo modo è possibile condividere il file con estensione npmrc del progetto con l'intero team mantenendo le credenziali protette.

Configurare l'autenticazione nella casella di sviluppo

Dovrebbe essere disponibile un file con estensione npmrc specifico del progetto contenente solo le informazioni del Registro di sistema del feed individuate nella finestra di dialogo "Si connette al feed". In questo file non devono essere presenti credenziali e il file stesso è adiacente all'package.js del progetto in.

Importante

Nel file .npmrc può essere presente una sola riga "registry=". Sono possibili più registri con le origini upstreamo usando gli ambiti (scelta non consigliata).

Windows

Se si sviluppa in Windows, è consigliabile usare per recuperare le credenziali e inserirle in vsts-npm-auth %USERPROFILE% \ .npmrc su base periodica. Il modo più semplice per configurare questa configurazione è installare a livello globale (ad esempio ) e quindi aggiungere uno script di esecuzione nel progettopackage.jsvsts-npm-auth npm install -g vsts-npm-auth in.

"scripts": {
    "refreshVSToken" : "vsts-npm-auth -config .npmrc"
}

Linux o Mac

vsts-npm-auth non è supportato per Linux/Mac. È consigliabile generare un token e salvarlo nel $HOME/.npmrc come indicato di seguito.

Configurazione del progetto

La Connessione da inserire genera un token formattato in modo appropriato che è possibile inserire nel file con estensione npmrc. Il token ha una durata di 90 giorni.

Suggerimento

Se si vuole creare un token che dura più di 90 giorni, assicurarsi di modificare la data di scadenza predefinita.

  1. All'interno del progetto selezionare Azure Artifacts e quindi selezionare Connessione per il feed.

    Selezionare Artifacts e quindi selezionare Connessione feed

  2. Selezionare npm.

  3. Nella sezione Project configurazione selezionare Altro .

    Project configurazione, Altro sistema operativo

  4. Aggiungere un file con estensione npmrc nella stessa directory del package.jsfile.

    registry=https://pkgs.dev.azure.com/<yourOrganization>/_packaging/<yourFeed>/npm/registry/
    
    always-auth=true
    

Configurazione delle credenziali

  1. Copiare il frammento di codice seguente nel file con estensione npmrc dell'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
      
    • Project feed con ambito locale:

      ; 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
      
  2. Generare un token di accesso personale con la creazione di pacchetti di ambiti di lettura e scrittura.

  3. Codificare il token di accesso personale appena generato come segue:

    1. Eseguire il comando seguente in una finestra del prompt dei comandi con privilegi elevati:

      node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
      

      È anche possibile usare il comando seguente per convertire il token di accesso personale in Base64 a seconda del sistema operativo:

      • Windows:

        [Convert]::ToBase64String([system.Text.Encoding]::UTF8.GetBytes("YOUR_PAT_GOES_HERE"))
        
      • LinuxMac:

        echo -n "YOUR_PAT_GOES_HERE" | base64
        
    2. Copiare il valore codificato Base64.

  4. Sostituire il segnaposto con il token di accesso personale con codifica [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] Base64 appena creato.

  1. In Pacchetti selezionare Connessione feed.

  2. Selezionare npm.

  3. Selezionare Genera credenziali npm. Copiare manualmente le credenziali per aggiungerle al file con estensione npmrc dell'utente:

    Screenshot del feed di connessione a npm.

Nota

vsts-npm-authnon è supportato in TFS locale e Azure DevOps Server.

Per usare i pacchetti da Azure Artifacts, configurare il progetto per fare riferimento a questo feed. Creare un nuovo file di .npmrc testo nella stessa directory di e package.json copiare il frammento di codice seguente:

@[YOUR_SCOPE]/registry=FabrikamBasic/_packaging/FabrikamFeed/npm/registry/

Per ripristinare i pacchetti, eseguire il comando seguente nella directory del progetto:

npm install

Configurare l'autenticazione in un'attività di compilazione

Esistono due opzioni per configurare l'autenticazione in un'attività di compilazione:

Senza Esecuzione attività

Per configurare l'autenticazione npm in un'attività di compilazione senza un runner di attività, seguire le istruzioni riportate di seguito.

  1. Selezionare Azure Pipelines, verrà visualizzata automaticamente la pagina Compilazioni.

    Passare alla scheda compilazioni TFS

  2. Creare una nuova pipeline.

    creare una nuova pipeline di compilazione

  3. Scegliere l'origine Project, Repository e Ramo predefinito e selezionare Continua.

  4. Iniziare con un processo vuoto.

  5. Sul lato sinistro selezionare il segno più ( + ) per aggiungere un'attività al processo 1. Sul lato destro selezionare la categoria Pacchetto, selezionare l'attività npm dall'elenco e quindi scegliere Aggiungi.

    Scheda compilazione Aggiungi attività al processo

  6. Selezionare l'attività di installazione npm, quindi individuare e selezionare la cartella di lavoro con package.jsin:

    Aggiungere l'attività di installazione npm alla pipeline di compilazione

  7. Espandere Registri personalizzati e autenticazione, qui sono disponibili alcune opzioni:

    • Registri in my .npmrc

      registri nel file npmrc

      Suggerimento

      È possibile scegliere le credenziali per l'autenticazione ai servizi esterni all'organizzazione o alla raccolta corrente configurando le connessioni al servizio.

    • Registro di sistema selezionato qui

      Registri da usare

      Quando si sceglie questa opzione, l'attività creerà un file con estensione npmrc temporaneo con le credenziali per il Registro di sistema selezionato e eseguirà l'override del file con estensione npmrc del progetto. Ciò è utile quando si vuole pubblicare in un feed specifico.

  8. Selezionare Salva e accoda e quindi Salva.

Suggerimento

Se l'attività di compilazione NPM Install non riesce con l'errore 403, assicurarsi di impostare il servizio di compilazione come collaboratore. A tale scopo, passare a Azure Artifacts -> Selezionare il feed -> Impostazioni -> Permissions -> impostare il ruolo del servizio di compilazione come collaboratore.

Screenshot del suggerimento

  1. Selezionare Compila e rilascia e quindi scegliere Compilazioni.

    passare alla scheda compilazioni TFS 2018

  2. Creare una nuova pipeline.

    creare una nuova pipeline

  3. Scegliere l'origine Project, Repository e Ramo predefinito e selezionare Continua.

  4. Iniziare con un processo vuoto.

  5. Sul lato sinistro selezionare il segno più ( + ) per aggiungere un'attività al processo 1. Sul lato destro selezionare la categoria Pacchetto, selezionare l'attività npm dall'elenco e quindi scegliere Aggiungi.

    Scheda compilazioni aggiungi attività npm al processo

  6. Selezionare l'attività di installazione npm, quindi individuare e selezionare la cartella di lavoro con package.jsin:

    Aggiungere l'attività di installazione npm

  7. Espandere Registri personalizzati e autenticazione, qui sono disponibili alcune opzioni:

    • Registri in my .npmrc

      registri in npmrc

      Suggerimento

      È possibile scegliere le credenziali per l'autenticazione ai servizi esterni all'organizzazione o alla raccolta corrente configurando le connessioni al servizio.

    • Registro di sistema selezionato qui

      opzione del Registro di sistema selezionata qui

      Quando si sceglie questa opzione, l'attività creerà un file con estensione npmrc temporaneo con le credenziali per il Registro di sistema selezionato e eseguirà l'override del file con estensione npmrc del progetto. Ciò è utile quando si vuole pubblicare in un feed specifico.

  8. Selezionare Salva e accoda e quindi Salva.

Con un runner di attività (ad esempio, eseguire il funzionamento di gulp)

Quando si usa un runner di attività, è necessario aggiungere l'attività di compilazione npm Authenticate all'inizio della pipeline di compilazione. In questo modo le credenziali verranno iniettate nel file con estensione npmrc del progetto e verranno mantenute per la durata della compilazione. Ciò consente ai passaggi di compilazione successivi di usare le credenziali in . npmrc.

  1. Selezionare Azure Pipelines, verrà visualizzata automaticamente la pagina Compilazioni.

    passare alla scheda build TFS 2018 second

  2. Creare una nuova pipeline.

    nuova pipeline di compilazione

  3. Scegliere l'origine Project, Repository e Ramo predefinito e selezionare Continua.

  4. Iniziare con un processo vuoto.

  5. Sul lato sinistro selezionare il segno più ( + ) per aggiungere un'attività al processo 1. Sul lato destro selezionare la categoria Pacchetto, selezionare l'attività npm Authenticate dall'elenco e quindi scegliere Aggiungi.

    scheda builds add npm task (Aggiungi attività npm)

  6. Selezionare l'attività npm Authenticate (Autenticazione npm) in Phase 1 (Fase 1):

    Fase attività npm auth

  7. Individuare e selezionare il file con estensione npmrc per l'autenticazione:

    Attività npm auth

    Suggerimento

    È possibile scegliere le credenziali per l'autenticazione ai servizi esterni all'organizzazione o alla raccolta corrente configurando le connessioni al servizio.

  8. Dopo aver impostato l'attività npm Authenticate, è possibile aggiungere altre attività di compilazione per il runner dell'attività, ad esempio Gulp.

  1. Selezionare Compila e rilascia e quindi scegliere Compilazioni.

    passare alla scheda Compilazioni di Team Foundation Services

  2. Creare una nuova pipeline.

    pulsante nuova pipeline di compilazione

  3. Scegliere l'origine Project, Repository e Ramo predefinito e selezionare Continua.

  4. Iniziare con un processo vuoto.

  5. Sul lato sinistro selezionare il segno più ( + ) per aggiungere un'attività al processo 1. Sul lato destro selezionare la categoria Pacchetto, selezionare l'attività npm Authenticate dall'elenco e quindi scegliere Aggiungi.

    builds-tab-add-task-to-job

  6. Selezionare l'attività npm Authenticate (Autenticazione npm) in Phase 1 (Fase 1):

    fase 1 npm auth

  7. Individuare e selezionare il file npmrc per l'autenticazione:

    File npmrc per l'autenticazione

    Suggerimento

    È possibile scegliere le credenziali per l'autenticazione ai servizi esterni all'organizzazione o alla raccolta corrente configurando le connessioni al servizio.

  8. Dopo aver impostato l'attività npm Authenticate, è possibile aggiungere altre attività di compilazione per il runner dell'attività, ad esempio Gulp.

Nota

Se si usa Yarn, eseguire il comando seguente per impostare il registro yarn: yarn config set registry "https://pkgs.dev.azure.com/<yourOrganization>/_packaging/<yourFeed>/npm/registry/"

Risoluzione dei problemi relativi vsts-npm-auth

  • Se viene visualizzato un errore simile al seguente:

    • Prompt: '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.

    è probabile che la cartella dei moduli npm non si trova nel percorso.

    Per risolvere questo problema, eseguire di Node.js e verificare che l'opzione e le Add to PATH relative opzioni figlio siano selezionate per l'installazione.

    Aggiungere all'opzione di installazione PATH nel Node.js installazione

    In alternativa, è possibile modificare la variabile PATH da aggiungere %APPDATA%\npm (prompt dei comandi) o $env:APPDATA\npm (PowerShell).

  • Se si verifica un errore E401: code E401 npm ERR! Unable to authenticate

    eseguire il vsts-npm-auth comando con l'argomento -F per eseguire nuovamente l'autenticazione.

    vsts-npm-auth -config .npmrc -F