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 linkcela 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_modulesavant et npm installaprè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 linkle dossier une fois (pour créer un lien symbolique global), puis l'exécuter npm link package-namedans 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 linkabouti à une dépendance en double, ce qui casse les choses si la dépendance doit être utilisée comme singleton.
npm pack + package.jsonC'est ce qui a fonctionné pour moi:
module project, exécutez npm pack:Cela va créer un <package-name>-<version>.tar.gzfichier.
consumer projectIdéalement, vous pouvez placer tous ces fichiers dans un tmpdossier à votre consumer-projectracine:
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installles packages:npm installou npm iouyarn
consumer-project's node_modulesdossier.Bonne chance...
Aucune de ces approches ( npm linkou package.jsondé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 myprojectest node_modules/comme ceci:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Lorsque le nœud se charge mymoduleet qu'il le fait require('foo'), le nœud résout le mymodulelien symbolique, puis recherche uniquement /local/mymodule/node_modules/(et ses ancêtres) fooce 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 fooest 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 mymodulemoment 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_PATHpour pointer vers l' node_modules/endroit où fooest installé. Donc pour le cas ci-dessus, ce serait ceci: NODE_PATH=/dev/myproject/node_modules/ Cela permet mymodulede 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-directorydoit cependant avoir deux choses pour que cela fonctionne.
1) package.jsondans ce répertoire pointé vers
2) la mainpropriété dans le package.jsondoit être définie et fonctionne ig "main": "src/index.js",si le fichier d'entrée pour ../location-of-your-packages-root-directoryest../location-of-your-packages-root-directory/src/index.js