Howto pubblicare i progetti privati di Sinopia (npm adduser privata del registro di sistema non riesce)

Ok, finalmente sono riuscito ad ottenere un privato npm registro di sistema utilizzando Sinopia. Ma non posso pubblicare nulla.

TL;DR: Sinopia non supporta npm adduser, ma ha il suo utente
di gestione. Anche npm ha bisogno di un valido utente creato prima npm pubblicare
attraverso npm adduser, che non riesce perché l’interno Sinopia server
genera un errore di comando non supportato….

Come si fa a utilizzare Sinopia privato del registro di sistema, con la corretta utenti e password

  1. creare un utente globale in npmjs.org e poi un altro con la stessa password nella Sinopia?
  2. O c’è un modo più semplice per raccontare npm basta usare un fisso user/pass.
  3. O meglio ancora il prompt di me in qualche modo per il nome utente e la password?
  4. qualcos’altro?

Sinossi:

Sinopia non dipende dal Divano.DB e hapilly scaricare i pacchetti non già da un master (di default è globale npmjs.org).

Sinopia inizia perfettamente ed è configurato per l’ascolto su tutte le interfacce. Funziona che è una meraviglia nel servire i pacchetti per

npm install

Ho anche configurato ~/.npmrc sempre punto all’interno del registro di sistema.

Tutti i progetti ” package.file json è impostato per

  ....
  "publishConfig" : {
     "registry" : "http://internal-npm:4873"
  },
  ....

Inoltre sono riuscito ad aggiungere utenti in sinopia modificando il config.yaml con l’aiuto di js-yaml

crypto.createHash('sha1').update('theBigPassword').digest('hex')

Ora mi sono bloccato al

npm --registry=http://internal-npm:4873 --ca=null publish

Dopo una lunga attesa ho fatto io:

npm ERR! need auth auth and email required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

npm ERR! System Linux 3.11.0-18-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "--registry=http://internal-npm:4873" "--ca=null" "publish"
npm ERR! cwd /home/ciprian/workspace/netop-npm
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.2.18
npm ERR! code ENEEDAUTH
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/ciprian/workspace/netop-npm/npm-debug.log
npm ERR! not ok code 0

Fine del file di log mi dice che l’utente non è un optional

86 error need auth auth and email required for publishing
86 error need auth You need to authorize this machine using `npm adduser`
87 error System Linux 3.11.0-18-generic
88 error command "/usr/bin/nodejs" "/usr/bin/npm" "--registry=http://internal-npm:4873" "--ca=null" "publish"
89 error cwd /home/ciprian/workspace/netop-npm
90 error node -v v0.10.15
91 error npm -v 1.2.18
92 error code ENEEDAUTH
93 verbose exit [ 1, true ]

Ora, il dell’uovo e della gallina problema è che Sinopia non supporta npm adduser, ma ha una sua gestione utente, come ho già detto sopra. Anche npm ha bisogno di un valido utente creato tramite npm adduser, che non riesce perché l’interno Sinopia server genera un errore di comando non supportato.

InformationsquelleAutor cdanea | 2014-03-25



5 Replies
  1. 25

    Prima di tutto, non è “l’uovo o la gallina” problema.

    “npm adduser” fa due cose:

    1. crea un nuovo utente sul server remoto, o si verifica che esiste
    2. aggiunge _auth al tuo .npmrc

    Sinopia si lamentano se l’utente non esiste, ma se non ti felicemente rapporto di successo.


    Così, quello che devi fare è questo:

    1. aggiungere user/pass per config.yaml (vedere josh risposta) e riavviare sinopia server
    2. eseguire npm adduser --registry http://internal-npm:4873/

    Sì, “adduser” comando è fonte di confusione, perché esso in realtà non aggiungere un nuovo utente. Ti basta verificare che l’utente esiste nel file di configurazione.

    Se si desidera, è possibile utilizzare “npm login” comando. È meno confusione, anche se non fa esattamente la stessa cosa. 🙂


    Secondo di tutto, aggiungi questo al tuo pacchetto.json:

    "publishConfig": {
      "registry": "http://internal-npm:4873/"
    }

    Questo modo npm non pubblicare il registro pubblico più, anche se è uno di default.


    E, infine, non è possibile utilizzare due registri (npmjs e il privato), al tempo stesso, con la stessa npmrc. È anche meno sicuro di quanto si pensi.

    Va bene nella maggior parte dei casi, ma se si hanno di utilizzare entrambi (per esempio, è di mantenere la pubblica e privata pacchetti allo stesso tempo), utilizzare yapm invece di npm e scrivere qualcosa di simile a questa .npmrc:

    [registries."https://registry.npmjs.org/"]
    _auth = (your auth string for public registry)
    
    [registries."http://internal-npm:4873/"]
    _auth = (your auth string for private registry)
    always-auth = true

    Sarà evitare di esporre la tua password per registro pubblico in tutti i casi.

    • +1 per il publishConfig commento. Non sapevo si potesse fare questo.
    • Ho sprecato un po ‘di tempo su questo…generato .npmrc da npm adduser passa un po’ tra la necessità http:// prima il privato del registro di sistema di url, e che non necessitano di protocollo prefisso…lunga storia breve, se si dimentica di mettere http:// in voi pacchetto publishConfig sezione, si ottiene un valido npm ERR! code ENEEDAUTH messaggio di errore, dove publish.js gocce tutte le informazioni di autenticazione dalla vostra richiesta.
    • Sembra Sinopia ora supporta l’aggiunta di utenti, semplicemente emissione npm adduser --registry=http://localhost:4873 . Non c’è bisogno di modificare il config.yaml più.
  2. 7

    La Sinopia LEGGIMI ti dice esattamente cosa fare.

    Aggiunta di un nuovo utente

    Non è di alcuna utilità per aggiungere un nuovo utente, ma si può almeno nodo sulla riga di comando per generare una password. Sarà necessario modificare il config e aggiungere l’utente manualmente.

    Nodo di partenza e immettere il codice riportato di seguito sostituisce ‘newpass’ con la password che si desidera ottenere l’hash per.

    $ node
    > crypto.createHash('sha1').update('newpass').digest('hex')
    '6c55803d6f1d7a177a0db3eb4b343b0d50f9c111'
    > [CTRL-D]

    Inserire il nuovo utente nel tuo config.file yaml.

    Si esegue quindi npm adduser per effettuare il login. (adduser è il comando utilizzato sia per la creazione di un account e login; sinopia non supporta la creazione parte.)

    • npm adduser non è riuscita perché il npmjs.org server era fuori ordine. E proprio per questo ho voluto un repository locale. Ancora questo NON è quello che volevo: non voglio che l’utente/password per essere valido per il mondiale npm repository. Non c’è un modo per aggiungere un utente manualmente in ~/.npmrc, senza che in realtà è globale CouchDB ?
    • Quello che non viene detto il doc è che si deve aggiungere lo stesso user e la stessa password in entrambi i sistemi, che sono profondamente antipatia.
    • No, non puoi. Si crea un utente e di una password hash e aggiungerlo al file config.yaml, quindi riavviare Sinopia. È quindi possibile utilizzare adduser e fornire il nome utente e la password in testo normale per accedere al tuo server privato. Non ha bisogno di essere lo stesso di un account esistente sul pubblico npm.
    • …in altre parole, npm adduser --registry=http://localhost:4873 ha lavorato per me quando ho digitato un nome utente e una password che avevo aggiunto al file config.yaml.
    • Ok, tutti i miei problemi sono riconducibili al fatto che npmjs.org non era il lavoro la maggior parte dei giorni scorsi. Anche io non sapevo come aggiungere un utente/pass hash in .npmrc non collegato al npmjs.org adesso so: _auth = base64(utente+’:’+pass)
    • Sembra Sinopia ora supporta l’aggiunta di utenti, semplicemente emissione npm adduser --registry=http://localhost:4873 . Non c’è bisogno di modificare il config.yaml più.

  3. 4

    Opzione 1 opere, ma io non sono veramente felice. Quindi continuerò a cercare

    SÌ, se posso aggiungere un valido npmjs.org utente, per poi passare la repo:

    npm config set registry http://internal-npm:4873/

    Il comando pubblica funzionerà se stesso user/pass esiste in Sinopia

    npm publish --registry=http://internal-npm:4873/

    Il rovescio della medaglia è che se qualcuno si dimentica di impostare in modo esplicito il privato del registro di sistema, la pubblicazione sarà 100% di lavoro globale npmjs.org che sarebbe un disastro.

    • Per evitare l’inconveniente che hai citato, aggiungere il publishConfig indicato in alex la risposta qui sotto. Questo limita in cui il pacchetto sarà pubblicato all’interno del pacchetto stesso. Quindi, anche se qualcuno si dimentica di impostare il registro di sistema per npm, la pubblicazione sarà ancora andare alla corretta del registro di sistema per il progetto.

Lascia un commento