Réponses:
De la documentation npm-link :
Dans le répertoire du module local:
$ cd ./package-dir
$ npm link
Dans le répertoire du projet pour utiliser le module:
$ cd ./project-dir
$ npm link package-name
Ou en une seule fois en utilisant des chemins relatifs:
$ cd ./project-dir
$ npm link ../package-dir
Cela équivaut à utiliser deux commandes ci-dessus sous le capot.
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:
npm install /path
rm -rf node_modules
avant et npm 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:
C'est pratique pour installer vos propres trucs, afin que vous puissiez y travailler et le tester de manière itérative sans avoir à reconstruire continuellement.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Modifier] Depuis NPM 2.0, vous pouvez déclarer des dépendances locales dans package.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
le dossier une fois (pour créer un lien symbolique global), puis l'exécuter npm 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 a npm 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:
module project
, exécutez npm pack
:Cela va créer un <package-name>-<version>.tar.gz
fichier.
consumer project
Idéalement, vous pouvez placer tous ces fichiers dans un tmp
dossier à votre consumer-project
racine:
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
les packages:npm install
ou npm i
ouyarn
consumer-project's node_modules
dossier.Bonne chance...
Aucune de ces approches ( npm link
ou package.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:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
Dans ce scénario, met en place NPM myproject
est node_modules/
comme ceci:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Lorsque le nœud se charge mymodule
et qu'il le fait require('foo')
, le nœud résout le mymodule
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ù il foo
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 du mymodule
moment où la syntaxe de dépendance de fichier est utilisée dans package.json
. Je n'ai pas trouvé de moyen non plus, malheureusement :(
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 permet mymodule
de trouver foo
.
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é vers
2) la main
propriété dans le package.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