2013-05-23 20 views
20

Attualmente corro sempre sudo npm install <package-name> ma come ho capito non è corretto.comando npm - sudo o no?

Voglio avere l'opportunità di non usarlo come root/amministratore. Ho seguito qualche consiglio e usato questo comando sudo chown -R <username> ~/.npm ma non funziona ...

per esempio, è una potenza di mia npm install jade

... 
npm http 200 https://registry.npmjs.org/amdefine 
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz 
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz 
npm ERR! Error: EACCES, symlink '../jade/bin/jade' 
npm ERR! { [Error: EACCES, symlink '../jade/bin/jade'] errno: 3, code: 'EACCES', path: '../jade/bin/jade' } 
npm ERR! 
npm ERR! Please try running this command again as root/Administrator. 

come vedete scaricare iniziato con successo ma poi fallito ..

Mi chiedo quale sia il modo migliore per disabilitare sudo su npm?

risposta

15

È possibile (e consigliabile) ai moduli di nodo npm install -g senza sudo.

Verificare l'autorizzazione della cartella /usr/local/share/npm/bin. Avevo installato nodo e npm tramite brew (senza sudo) e quella particolare cartella finì per essere di proprietà di root.

che venga risolta per una volta per tutte:

$ sudo chown $(whoami) /usr/local/share/npm/bin 

(Per quanto riguarda il non consentire sudo con NPM:. Dovreste modificare NPM per questo il proprio codice nodo potrebbe fare uso di https://npmjs.org/package/sudo-block, npm install sudo-block)

+2

ho dovuto modificare le autorizzazioni sia per /usr/local/bin e /usr/local/lib/node_modules –

+0

@TelmoDias ho dovuto la stessa cosa, a quanto pare NPM potrebbe essere cambiato la directory si usa per installare pacchetti globali – Knights

+0

grazie, ottima risposta. – theCodeSurgeon

4

si può anche fare:

sudo chown -R $USER /usr/local 

e ricorsivamente modificare i file per l'utente corrente.

0

Le due soluzioni offerte qui non sono qualcosa che consiglierei perché sono soluzioni a forza bruta. Invece, vi consiglio di leggere One does not simply sudo npm

1

Ho trovato questo per essere una soluzione migliore

sudo chown -R $USER /Users/$USER

Questo sarà solo cambiare il proprietario del vostro utente a voi e NPM deve essere installato sotto il vostro utente su OS X Tutto quello che ho letto dice sudo per le installazioni di npm è brutto e dovrei essere d'accordo con loro mentre vi aprite agli script maligni.

11

a mio parere è il modo più pulito per specificare il prefisso NPM:

npm config set prefix ~/.node_modules 

E poi aggiungere quanto segue per voi Bash_profile

export PATH=$HOME/.node_modules/bin:$PATH 

Ora i pacchetti verranno installati nella vostra directory utente e nessuna autorizzazione sarà danneggiata.


EDIT: Se non è possibile installare Yeoman, creare un file di bash in una delle vostre directory PATH nome yodoctor con i seguenti contenuti

#!/bin/bash 
yo doctor 

Rendere il file eseguibile con

chmod +x yodoctor 

E ora dovresti essere in grado di installare yeoman.

+2

Vedere le opzioni consigliate da npm per risolvere il problema di autorizzazione di npm: [https://docs.npmjs.com/getting-started/fixing-npm-permissions](https://docs.npmjs.com/getting-started/fixing-npm -permissions). Questa risposta (da @febLey) è allineata alle raccomandazioni di NPM. – Yiling