При установке пакета с NPM, можете ли вы сказать ему использовать другую версию одной из его зависимостей?

Скажем, вы хотите установить библиотеку lib-a который имеет зависимости dep-1 а также dep-2, Если lib-a объявил в своем package.json использовать версию dep-2 это устарело (скажем, это не работает на узле 0.8.0, который только что вышел), но есть ветвь dep-2 который работает с узлом 0.8.0 - имя ветки node0.8.0,

Итак, пакеты в уравнении:

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

Есть ли способ сказать NPM для установки lib-a, но использовать dep-2#node0.8.0 вместо dep-2?

С помощью NPM вы можете установить определенную ветку проекта следующим образом:

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

И если бы я должен был настроить package.json из lib-aВы могли бы сказать это использовать dep-2#node0.8.0 как это:

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

Изменяя package.json, вы можете запустить

npm install lib-a

и он установит совместимый узел 0.8.0 dep-2 ветка. Но это требует, чтобы у меня был доступ к изменению lib-a, что для моего конкретного случая я не. Технически я мог раскошелиться lib-a и внесите вышеуказанные изменения в package.json. Но в моем конкретном случае, lib-a это зависимость от другой библиотеки, так что мне придется раскошелиться на проект, на который она ссылается, и так далее...

Так что вопрос в том, есть ли способ указать NPM для установки lib-aи скажи ему использовать node0.8.0 филиал dep-2? Что-то вроде этого:

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

Это было бы круто. Если это невозможно, это было бы полезно узнать, чтобы я мог подготовиться к тому, чтобы раскошелиться / настроить цепочку проектов.

1 ответ

Решение

Синтаксис установки 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)

так что вы можете выбрать один из этих методов для установки ваших модулей.

Случай простейшего способа установки конкретной версии:

npm install module@0.0.2

дополнительная информация: https://docs.npmjs.com/cli/install

Другие вопросы по тегам