web-dev-qa-db-fra.com

Lors de l'installation d'un paquet avec NPM, pouvez-vous lui dire d'utiliser une version différente de l'une de ses dépendances?

Supposons que vous souhaitiez installer une bibliothèque lib-a Comportant des dépendances dep-1 Et dep-2. Si lib-a A déclaré dans son package.json utiliser une version obsolète de dep-2 (Disons que cela ne fonctionne pas sur le noeud 0.8.0 qui vient de sortir), mais est une branche de dep-2 qui fonctionne avec le noeud 0.8.0 - nom de la branche node0.8.0.

Donc les paquets dans l'équation sont:

git://github.com/user-a/lib-a
git://github.com/user-b/dep-1
git://github.com/user-c/dep-2
git://github.com/user-c/dep-2#node0.8.0

Y a-t-il un moyen de dire à NPM d'installer lib-a, Mais utilisez dep-2#node0.8.0 Au lieu de dep-2?

Avec NPM, vous pouvez installer une branche spécifique d'un projet comme ceci:

npm install git://github.com/user-c/dep-2#node0.8.0

Et si je personnalisais le package.json de lib-a, Vous pourriez lui dire d'utiliser dep-2#node0.8.0 Comme ceci:

{
  "name": "lib-a",
  "dependencies": {
    "dep-1": ">= 1.5.0",
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0"
  }
}

En modifiant le package.json, vous pouvez ensuite exécuter

npm install lib-a

et il installera la branche dep-2 compatible avec le noeud 0.8.0. Mais, cela nécessite que je puisse modifier lib-a, Ce qui n'est pas le cas dans mon cas particulier. Techniquement, je pourrais insérer lib-a Et apporter la modification ci-dessus à package.json. Mais dans mon cas particulier, lib-a Est une dépendance de la bibliothèque ne autre, je devrais donc bifurquer le projet dans lequel il est référencé, et ainsi de suite ...

La question est donc la suivante: y a-t-il un moyen de dire à NPM d'installer lib-a Et de lui dire d'utiliser la branche node0.8.0 De dep-2? Quelque chose comme ça:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0

Ce serait génial. Si ce n'est pas possible, il serait bon de le savoir afin que je puisse me préparer à devoir bifurquer/personnaliser la chaîne de projets.

60
Lance Pollard

Syntaxe d'installation de NPM:

npm install (with no args in a package dir)
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
npm install [@<scope>/]<name>@<tag>
npm install [@<scope>/]<name>@<version>
npm install [@<scope>/]<name>@<version range>
npm i (with any of the previous argument usage)

afin que vous puissiez choisir l’une de ces méthodes pour installer vos modules.

Le cas du moyen le plus simple d’installer une version spécifique est celui-ci:

npm install [email protected]

plus d'infos: https://docs.npmjs.com/cli/install

46
micnic