-
Notifications
You must be signed in to change notification settings - Fork 2
une blague avec npm install
Ça se passe ainsi. Je me prépare à travailler sur un nouveau projet, et je crée un répertoire.
mkdir plouf
Pris dans mon élan, je commence à installer des modules node.js, sans avoir pensé à changer de répertoire. Et en plus, je décide contre tout bon sens d'installer les modules en local, mais avec l'utilisateur root.
sudo npm install mes-modules-pour-plouf
Puis je passe à autre chose parce que je suis une personne pressée. Disons que je me documente sur les plus beaux modules, voire s'il n'y en a pas déjà qui font ce que mon projet ferait. Bref, je passe à autre chose et je n'ai toujours pas commencé à coder.
Les semaines passent…
Je me mets à un nouveau projet. Parce que j'ai beau être une personne pressée, ça ne m'empêche pas d'avoir plein d'idées.
mkdir pouet
Cette fois, je pense à aller dans mon répertoire.
cd pouet
… Mais j'ai complètement oublié que j'avais installé des modules dans le
répertoire parent, qui plus est dans un répertoire créé par root. Ce que
je me rappelle, en revanche, c'est que je ne dois pas utiliser sudo
pour installer les modules en local. Alors, j'y vais.
npm install mes-modules-à-pouet
Et là, paf, ça explose de partout. Insultes généralisées de la part de npm, je ris un bon coup, mais je ne sais pas comment m'en sortir.
npm
sait regarder si par hasard il n'y a pas un répertoire d'installation
de modules dans l'arborescence parente. Si c'est le cas, il cherche à
les installer à cet endroit. Si on n'a pas les droits en écriture sur ce
répertoire, npm
lance une erreur.
- Renommer le répertoire dans l'arborescence parente, dans lequel sont installés les modules.
- Vérifier si d'autres projets sont impactés par le fait que les modules de ce répertoire ne sont plus accessibles
- Si c'est le cas, réinstaller les modules dans les répertoire des projets
- Lorsque plus aucun projet n'est impacté, détruire le répertoire en question.
- Reprendre une activité normale : aller dans le projet sur lequel on veut travailler, installer dans ce répertoire-là les modules dont on a besoin.
- Ne pas installer localement des modules avec
sudo npm install
- Utiliser à la racine du projet un descripteur de projet
package.json
(qu'on peut générer avecnpm init
)