Installer NPM dans le répertoire de base avec le package de dissortingbution nodejs (Ubuntu)

Je voudrais utiliser les paquets de dissortingbution Node.js (ou le chris-lea ppa pour les versions plus récentes) mais installer NPM sur mon répertoire personnel.

Cela peut sembler difficile, mais c’est une manière assez idiomatique pour les développeurs utilisant des fichiers polyglottes / github de configurer des environnements d’exécution / bibliothèque de langue sous Linux: paquets de dissortingbution pour l’environnement d’exécution, bibliothèques tierces construira également Ruby pour vous si vous le souhaitez). Si nécessaire, je construirai un nœud localement, mais c’est un PITA, car Node devient un besoin de développement accessoire pour de nombreux projets.

  • Instructions pour l’installation de node + npm dans le répertoire de base
  • Une autre méthode pour installer node + npm à la maison

Le second lien semble fonctionner avec les paquets de dissortingbution de nodejs, mais il semble assez sommaire.

Mettre à jour cette pâte résume le deuxième lien ci-dessus, mais ne fonctionne pas pour moi (il semble que npm ignore ~ ​​/ .npmrc, au moins pendant l’installation).

NPM installera déjà les packages locaux dans vos projets, mais j’aime toujours garder le système à l’écart des fichiers de mon système d’exploitation. Voici comment je propose de compartimenter les packages Nodejs:

Installez Nodejs et NPM via le PPA chris-lea. Ensuite, j’ai configuré une racine de package dans mon répertoire principal pour contenir les packages “globaux” du noeud:

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

Définissez NPM pour utiliser ce répertoire pour ses installations de paquetages globales:

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

Configurez votre PATH et MANPATH pour voir les commandes de votre préfixe $ NPM_PACKAGES en ajoutant ce qui suit à votre fichier .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, lorsque vous effectuez une npm install -g , NPM installe les bibliothèques dans ~/.npm-packages/lib/node_modules et lie les outils exécutables dans ~/.npm-packages/bin , qui se trouve dans votre PATH .

Utilisez simplement 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 

La réponse de Jake a été publiée en 2012 et, bien qu’utile, elle fait référence aux PPA de Node.js de Chris Lea qui ne sont plus mis à jour depuis mars 2015.

Voici les étapes à suivre pour installer Node.js et npm dans mon répertoire personnel:

Installez Node.js avec nvm (pas de sudo requirejs):

 curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash source ~/.bashrc nvm install 7 npm install -g npm # update npm 

Maintenant, vous pouvez install -g sans sudo et tout va dans ~/.nvm/

Ou installez Node.js sans nvm ( instructions officielles ):

Installez Node.js

  • Node.js v6 (LTS actuelle à partir de mai 2017):

     curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs 
  • Node.js v7:

     curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - sudo apt-get install -y nodejs 

Changez le répertoire par défaut de npm en un répertoire local:

 mkdir ~/.npm-global npm config set prefix '~/.npm-global' export PATH="$HOME/.npm-global/bin:$PATH" # ← put this line in .bashrc source ~/.bashrc # if you only updated .bashrc 

Vous pouvez également remplacer .npm-global par le répertoire de votre choix.

Mettez à jour npm et vérifiez qu’il est installé dans votre répertoire $HOME :

 $ npm install npm -g /home//.npm-global/bin/npm -> /home//.npm-global/lib/node_modules/npm/bin/npm-cli.js /home//.npm-global/lib └─┬ npm@3.10.6 ├─┬ glob@7.0.5 │ └── minimatch@3.0.2 ├── npm-user-validate@0.1.5 └── rimraf@2.5.3 

Vous pouvez maintenant install -g sans sudo et sans perturber vos fichiers système.

La solution proposée par Just Jake est excellente. Cependant, à cause d’un bogue avec npm> 1.4.10, il se peut qu’il ne fonctionne pas comme prévu. (Voir ceci et ceci )

Bien que le bogue soit résolu, vous pouvez revenir à la version 1.4.10 de npm en procédant comme suit:

  1. Commentez la ligne de préfixe dans votre $ HOME / .npmrc
  2. Exécutez sudo npm install -g npm@1.4.10
  3. Assurez-vous que la bonne version de npm est installée ( npm --version )
  4. Décommentez la ligne de préfixe dans votre $ HOME / .npmrc
  5. Continuez à installer vos paquets globaux dans votre dossier personnel!

Comme python fait déjà un excellent travail virtualenv , j’utilise nodeenv . Par rapport à nvm , vous pouvez créer plusieurs environnements pour la même version de nœud (par exemple, deux environnements pour le nœud 0.10 mais avec différents ensembles de packages).

 ENVNAME=dev1 # create an environment python -m virtualenv ${ENVNAME} # switch to the newly created env source ${ENVNAME}/bin/activate # install nodeenv pip install nodeenv # install system's node into virtualenv nodeenv --node=system --python-virtualenv 

Le readme est très bon: https://github.com/ekalinin/nodeenv

J’ai utilisé la solution @ just-jake pendant un certain temps et j’ai constaté que nvm était plus facile à configurer. C’est aussi une solution très puissante qui permet d’installer et d’utiliser différentes versions de nodejs .

Sur Ubuntu 14.04 ou 16.04:

  1. Installez les packages prérequirejs pour construire nodejs :

     sudo apt-get update sudo apt-get install build-essential libssl-dev 
  2. Installez nvm :

     curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash 

    Si une version plus récente de nvm est disponible, vous pouvez trouver la commande d’installation réelle sur le site nvm .

  3. nvm installateur nvm appenda un script bootstrap à ~/.bashrc , vous devrez donc soit rouvrir le terminal pour l’exécuter, soit faire:

     source ~/.bashrc 
  4. Maintenant, vous pouvez installer la version de nodejs vous aimez, basculer entre eux, etc.

    Utilisez nvm ls-remote pour répertorier les versions de nodejs disponibles.

    Pour installer, par exemple, nodejs v4.2.4 faire:

     # install v4.2.4 nvm install v4.2.4 # use nodejs v4.2.4 in the current terminal session nvm use v4.2.4 # use v4.2.4 by default in new terminal session nvm alias default v4.2.4 

Pour développer la réponse fournie par Just Jake et user1533401: Je ne parviens pas à rétrograder car j’utilise l’hébergement partagé et que node est installé dans un répertoire système. C’est aussi pour cette raison que j’ai modifié le répertoire où npm installe les scripts globaux si je le souhaite. Pour ceux qui se trouvent dans le même bateau, voici une autre solution temporaire que j’ai trouvée:

npm install -g --prefix=$(npm config get prefix)

Le bogue est que npm ne lit pas votre fichier de configuration par utilisateur, mais le spécifier chaque fois que vous installez un script global résout ce problème. Trouvé ici .

Comme déjà dit ici et ici

 npm config set prefix ~ echo export PATH=\$PATH:\~/bin >> ~/.bashrc . ~/.bashrc