2010-09-15 7 views
11

Définition de npm en tant que superutilisateur root et workds. Sauf que vous devez exécuter des commandes npm en tant que root (non recommandé). J'ai donc pensé essayer de le configurer en tant qu'utilisateur non root.Comment paramétrez-vous npm (node ​​package manager) sans accès root?

Selon la documentation de NPM, un utilisateur non root sans accès root peut mettre en place NPM par:

  1. création d'un fichier .npmrc avec root, binroot et manroot pointant vers des dossiers que l'utilisateur possède.
  2. Ensuite, exécutez le script d'installation.

OK. L'installation était bien.

Mais le noeud ne peut pas voir les packages fournis par npm.

Alors, comment est-ce que je rends le noeud conscient des paquets fournis par npm? (Je n'avais rien à faire quand j'ai déjà installé npm en tant que root). Je peux définir require.paths dans un nœud, ou définir la variable d'environnement NODE_PATH, mais à quoi?

Merci.

+0

Est-ce que npm ne vient pas avec le noeud maintenant? Je n'ai jamais eu besoin d'exécuter npm commans en tant que root à moins que j'utilise -g ... – tjameson

Répondre

5

Grâce à une petite exploration, il semble que vous pouvez soit:

  1. mis votre NODE_PATH à tout ce que le répertoire racine de NPM est, ou
  2. alors que dans le nœud, invoquez require.paths.push('path_to_npm_root')
+0

Et si vous essayez de le déboguer à partir du repl, voir http://github.com/ry/node/issues/ fermé # numéro/303 – keturn

4

Cela a fonctionné pour moi:

  1. Créer un dossier

    mkdir ~/.node 
    
  2. Modifier ~/.npmrc et ajoutez la ligne

    prefix = ~/.node 
    
  3. Modifier vos ~/.profile ou ~/.bash_profile et ajoutez ces lignes

    PATH="$HOME/.node/bin:$PATH" 
    NODE_PATH="$HOME/.node/lib/node_modules:$NODE_PATH" 
    

Maintenant, je peux faire des choses comme npm -g install http-server et ça va grand à ~/.node sans racine. Avec ceci en place, quand je tape alors http-server, il s'exécute.

Questions connexes