web-dev-qa-db-fra.com

Modules NPM installés localement ou installés globalement

Dans mon package.json fichier, j'ai bower répertorié comme une dépendance. Après avoir exécuté npm install, bower est installé localement. Lorsque j'essaie d'exécuter bower après l'avoir installé localement, j'obtiens une erreur

"bower" n'est pas reconnu comme une commande interne ou externe

Il semble que le seul moyen de résoudre ce problème soit d'installer bower à l'échelle mondiale. Pourquoi devrais-je faire ça? Si mon projet contient une copie locale de bower, pourquoi le nœud ne l'utilisera-t-il pas?

30
Rigil

L'installation en local rend bower disponible pour le projet en cours (où il stocke tous les modules de nœuds dans node_modules). Ceci n'est généralement bon que pour l'utilisation d'un module comme ceci var module = require('module'); Il ne sera pas disponible en tant que commande que le shell pourra résoudre jusqu'à vous l'installez globalement npm install -g module où npm l'installera dans un endroit où votre variable de chemin résoudra cette commande .

Edit: Cette documentation l'explique assez bien.

35
Jimi

Vous pouvez exécuter votre instance locale en tapant la ligne ci-dessous en cmd:

node_modules/bower/bin/bower <bower args>
19
Selameab

Habituellement, vous installez les modules NPM globalement si vous souhaitez qu'ils soient inclus dans votre chemin d'accès pour être exécutés à partir de la ligne de commande. Comme il est installé localement, vous devrez l'exécuter à partir du node_modules dossier.

2
Joseph Dailey

Nous utilisons à la fois PHP et JavaScript, nous avons donc composer et npm.

Chacun des projets sur lesquels nous travaillons a des packages différents à la fois pour l'exécution du package ainsi que pour les outils de génération/développement.

Comme il y a des contraintes de version dans chaque projet, l'installation globale de la version x d'un package (qui serait exécutée à partir de la ligne de commande), nous poserait des problèmes, nous installons tous les outils dans chaque package. Beaucoup plus facile à définir dans les fichiers composer.json/package.json appropriés.

Mais l'exécution des outils CLI est pénible si vous devez constamment ajouter un chemin supplémentaire à la commande.

À cette fin, nous avons recommandé à l'équipe que les chemins suivants soient ajoutés à votre $PATH dans le .bashrc approprié (ou équivalent):

./vendor/bin:./node_modules/.bin

(EDIT: pour Windows, les chemins d'accès seraient .\vendor\bin;.\node_modules\.bin;)

Ainsi, alors que dans le projet X, nous avons accès aux outils CLI pour ce projet. Passez au projet Y, et nous obtenons ces outils de projets.

Bien sûr, vous allez obtenir des doublons, mais chaque projet est géré par différentes équipes (et certaines personnes sont dans plusieurs équipes), donc encore une fois, avoir une version dans la configuration globale est un problème.

2
Richard A Quadling