J'ai un dépôt de module téléchargé, je veux l'installer localement, pas globalement dans un autre répertoire?
Quelle est la manière la plus simple de procéder?
javascript
node.js
npm
packages
npm-install
fantaisie
la source
la source
npm link
cela créera une deuxième instance de dépendances externes. Donc, si vous avez un package A besoin de B et C, B a besoin de C. relier B entraînera l'application A pour avoir deux instances de C.vous fournissez un seul
<folder>
argument ànpm install
, argument doit pointer vers le dossier local au lieu du nom du package:la source
rm -rf node_modules
avant etnpm install
après avoir exécuté le script de la réponse.Depuis que la même personne m'a demandé et répondu, je vais ajouter un lien npm comme alternative.
à partir de documents:
[Modifier] Depuis NPM 2.0, vous pouvez déclarer des dépendances locales dans package.json
la source
npm link
le dossier une fois (pour créer un lien symbolique global), puis l'exécuternpm link package-name
dans le dossier du projet (pour utiliser le lien symbolique global dans votre projet). La réponse ci-dessous est la bonne réponse.file:
approche) a permis à mon application et au module local de partager une dépendance. Mon test anpm link
abouti à une dépendance en double, ce qui casse les choses si la dépendance doit être utilisée comme singleton.npm pack
+package.json
C'est ce qui a fonctionné pour moi:
ÉTAPE 1: Dans
module project
, exécuteznpm pack
:Cela va créer un
<package-name>-<version>.tar.gz
fichier.ÉTAPE 2: déplacez le fichier vers
consumer project
Idéalement, vous pouvez placer tous ces fichiers dans un
tmp
dossier à votreconsumer-project
racine:ÉTAPE 3: Référez-le dans votre
package.json
:ÉTAPE 4:
Install
les packages:npm install
ounpm i
ouyarn
Maintenant, votre package serait disponible dans votre
consumer-project's node_modules
dossier.Bonne chance...
la source
Aucune de ces approches (
npm link
oupackage.json
dépendance de fichier) ne fonctionne si le module local a des dépendances d'homologue que vous souhaitez uniquement installer dans la portée de votre projet.Par exemple:
Dans ce scénario, met en place NPM
myproject
estnode_modules/
comme ceci:Lorsque le nœud se charge
mymodule
et qu'il le faitrequire('foo')
, le nœud résout lemymodule
lien symbolique, puis recherche uniquement/local/mymodule/node_modules/
(et ses ancêtres)foo
ce qu'il ne trouve pas. Au lieu de cela, nous voulons que le nœud regarde/local/myproject/node_modules/
, car c'est à partir de là que notre projet était exécuté et où ilfoo
est installé.Donc, soit nous avons besoin d'un moyen de dire à node de ne pas résoudre ce lien symbolique lors de la recherche
foo
, soit nous avons besoin d'un moyen de dire à npm d'installer une copie dumymodule
moment où la syntaxe de dépendance de fichier est utilisée danspackage.json
. Je n'ai pas trouvé de moyen non plus, malheureusement :(la source
NODE_PATH
pour pointer vers l'node_modules/
endroit oùfoo
est installé. Donc pour le cas ci-dessus, ce serait ceci:NODE_PATH=/dev/myproject/node_modules/
Cela permetmymodule
de trouverfoo
.Vous manquez la propriété principale?
Comme les personnes précédentes l'ont répondu
npm --save ../location-of-your-packages-root-directory
. Le../location-of-your-packages-root-directory
doit cependant avoir deux choses pour que cela fonctionne.1)
package.json
dans ce répertoire pointé vers2) la
main
propriété dans lepackage.json
doit être définie et fonctionne ig"main": "src/index.js",
si le fichier d'entrée pour../location-of-your-packages-root-directory
est../location-of-your-packages-root-directory/src/index.js
la source