J'ai un dépôt de module téléchargé, je veux l'installer localement, pas globalement dans un autre répertoire?
Quel est un moyen facile de faire cela?
vous venez de fournir un argument _<folder>
_ à npm install
, l'argument doit pointer vers le dossier local au lieu du nom du package:
_npm install /path
_
De la documentation de 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 fois en utilisant des chemins relatifs:
$ cd ./project-dir
$ npm link ../package-dir
Ceci équivaut à utiliser deux commandes ci-dessus sous le capot.
Puisque demandé et répondu par la même personne, j'ajouterai un lien de npm comme alternative.
de docs:
C'est pratique pour installer vos propres fichiers, afin que vous puissiez travailler dessus et les 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] À partir de NPM 2.0, vous pouvez déclarer des dépendances locales dans package.json.
"dependencies": {
"bar": "file:../foo/bar"
}
Aucune de ces approches (dépendance de fichier npm link
ou package.json
) ne fonctionne si le module local possède des dépendances entre homologues 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, npm configure le node_modules/
de myproject
comme suit:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Lorsque le nœud charge mymodule
et que require('foo')
, il résout le lien symbolique mymodule
et ne recherche que dans /local/mymodule/node_modules/
(et ses ancêtres) foo
, qui il ne trouve pas. Au lieu de cela, nous voulons que le noeud regarde dans /local/myproject/node_modules/
, car c'est là que notre projet est exécuté et où foo
est installé.
Nous avons donc besoin d'un moyen d'indiquer au noeud pas de résoudre ce lien symbolique lorsque vous recherchez foo
, ou nous avons besoin d'un moyen d'indiquer à npm d'installer un copie de mymodule
lorsque la syntaxe de dépendance de fichier est utilisée dans package.json
. Malheureusement, je n'ai pas trouvé le moyen de faire non plus :(