99 votes

Installer le NPM dans le répertoire de base avec le paquet de distribution nodejs (Ubuntu)

J'aimerais utiliser la distribution Node.js les paquets (ou le chris-lea ppa pour les versions plus récentes), mais d'installer MNP à mon répertoire home.

Cela peut sembler difficile, mais c'est une jolie idiomatiques moyen pour polyglotte/github-aide les développeurs à la langue d'installation du runtime/bibliothèque environnements sous Linux: la distribution des packages pour le moment de l'exécution, de la 3e partie des bibliothèques dans l'environnement de l'utilisateur (voir virtualenv, RVM - RVM aussi construire des Rubis pour vous si vous le souhaitez). Si nécessaire, je bâtirai nœud local, mais c'est un pain PITA depuis le Nœud est en train de devenir un accessoire de développement exigence pour beaucoup de projets.

Le second lien semble comme il pourrait travailler avec la distribution de nodejs paquets, mais il semble assez louche.

Mise à jour de cette pâte , résume le second lien ci-dessus, mais ne fonctionne pas pour moi (il semble que mnp ignore ~/.npmrc, au moins lors de l'installation).

213voto

Just Jake Points 1521

NPM va installer les packages locaux dans vos projets déjà, mais je tiens à garder l'appareil loin de mon exploitation du système de fichiers. Voici comment je suggère de compartimenter Nodejs paquets:

Installer Nodejs et NPM via le chris-lea PPA. Puis j'ai mis en place un package racine dans mon répertoire personnel pour tenir le Nœud "global" packages:

 $ NPM_PACKAGES="$HOME/.npm-packages"
 $ mkdir -p "$NPM_PACKAGES"

Jeu de MNP à utiliser ce répertoire mondial de package installe:

 $ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc

Configurer votre CHEMIN et MANPATH pour afficher les commandes dans votre $NPM_PACKAGES préfixe par adjonction, à la votre .zshrc/.bashrc:

# NPM packages in homedir
NPM_PACKAGES="$HOME/.npm-packages"

# Tell our environment about user-installed node tools
PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath` command
unset MANPATH  # delete if you already modified MANPATH elsewhere in your configuration
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

# Tell Node about these packages
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"

Maintenant, quand vous faites une npm install -g, NPM va installer les bibliothèques en ~/.npm-packages/lib/node_modules, et un lien exécutable outils en ~/.npm-packages/bin, ce qui est dans votre PATH.

Suffit d'utiliser npm install -g comme vous le feriez normalement:

[justjake@marathon:~] $ npm install -g coffee-script
... (npm downloads stuff) ...
/home/justjake/.npm-packages/bin/coffee -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/coffee
/home/justjake/.npm-packages/bin/cake -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/cake
coffee-script@1.3.3 /home/justjake/.npm-packages/lib/node_modules/coffee-script

[justjake@marathon:~] $ which coffee
/home/justjake/.npm-packages/bin/coffee

6voto

user1533401 Points 61

La solution posté par Juste, Jake est grande. Toutefois, en raison d'un bug avec les mnp > 1.4.10, il peut ne pas fonctionner comme prévu. (Voir ceci et cela)

Alors que le bug est résolu, vous pouvez revenir à la ngp 1.4.10 en suivant cette procédure:

  1. Commentaire le préfixe de ligne dans votre $HOME/.npmrc
  2. Exécutez sudo npm install -g npm@1.4.10
  3. S'assurer que la bonne version de la ngp est installé (npm --version)
  4. Décommentez le préfixe de ligne dans votre $HOME/.npmrc
  5. Procéder à l'installation de votre colis dans votre dossier d'accueil!.

2voto

ultimatebowser Points 13

Pour étoffer la réponse fournie par Seulement Jake et user1533401: je suis pas déclasser comme je l'ai utiliser l'hébergement mutualisé et le nœud est installé dans un répertoire système. C'est aussi pourquoi j'ai changer le répertoire où mnp installe mondial des scripts, si je le veux pour le faire. Pour ceux dans le même bateau, voici une autre solution temporaire que j'ai trouvé fonctionne:

npm install -g --prefix=$(npm config get prefix) <package>

Le bug, c'est que la ngp ne pas lire vos par utilisateur du fichier de config, mais en précisant à chaque fois que vous installez un script global des correctifs. Trouvé ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X