Как сделать модуль узла зависимым от другого модуля, установленного в целевом проекте - PullRequest
0 голосов
/ 04 марта 2020

Я пишу модуль узла (isSameAs), который добавляет некоторые функциональные возможности к модулю (класс-валидатор), который уже установлен в моем проекте.

Когда он был внутри моего проекта, он работал, но после того, как я извлек его в отдельный модуль, он перестал работать. Этот модуль зависит от модуля class-validator, поэтому я установил его внутри каталога модулей.

Я предполагаю, что из-за 2 экземпляров модуля, который я пытаюсь изменить (project/node_modules/class-validator и project/node_modules/my_module/class-validator), он перезаписывает class-validator, который находится внутри моего каталога модулей, что неверно.

Код моего модуля

index. js

import { registerDecorator } from "class-validator";

export function IsSameAs() {
    console.log('value is the same');
}

package. json

"dependencies": {
  "class-validator": "^0.11.0"
}

Проект, который использует мой модуль и проверку class-validator

. js

import { IsSameAs } from 'class-validator-same-as';

package. json

"class-validator": "^0.11.0",
"class-validator-same-as": "file:../class-validator-isSameAs",

Итак, очевидно, что внутри моего модуля есть второй экземпляр класса-валидатора, есть ли способ не установить class-validator внутри моего модуля, а вместо этого использовать глобальный?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Вы можете использовать одноранговую зависимость, таким образом вы можете явно указать, что вашему пакету требуется установить другой пакет. Пользователь даже получит аккуратное сообщение при установке вашего пакета без этих зависимостей.

Пакет. json для вашего модуля будет выглядеть примерно так:

"peerDependencies": {
  "class-validator": "^0.11.0"
}

Вы можете прочитать больше на peer Зависимость здесь

0 голосов
/ 04 марта 2020

Я могу представить себе два варианта:

  • Реэкспорт модуля / функций class-validator из вашего модуля class-validator-same-as. В вашем основном проекте вы импортируете только свой модуль class-validator-same-as.
  • Используйте внедрение зависимостей для внедрения class-validator модуля / функций в ваш class-validator-same-as модуль. Вы импортируете class-validator только в свой основной проект и предоставляете ссылку на class-validator в свой модуль class-validator-same-as.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...