Node.js Зависимости как синглтоны - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь создать свой собственный npm пакет my-package, который опирается на зависимость dependency-a и используется в каком-то проекте cool-project, который опирается на my-package и dependency-a.

cool-project
- dependency-a
- my-package
  - dependency-a

dependency-a:

export const someVar = 0;

my-package:

import depA from 'dependency-a'

const someFun = () => {
  depA.someVar = 1;
}

cool-project:

import depA from 'dependency-a';
import myPackage from 'my-package';

myPackage.someFun();
console.log(depA.someVar); // expected (desired) 1, actual 0

Выше будет работать, если myPackage был модулем, отличным от cool-project, однако, поскольку я хочу, чтобы my-package был автономным npm модулем, при попытке связать его с cool-project он, похоже, полагается на отдельную версию dependency-a .

Есть ли способ создать модуль npm, который может модифицировать одиночный файл сторонней библиотеки и автоматически делить его между двумя модулями, полагаясь на него. Я использую babel / webpack для сборки my-package, поэтому, если есть способ сделать это через это, тогда это тоже работает для меня!

Примечание: я знаю, что могу сделать что-то вроде return depA с my-package - это не работает для того, что мне нужно сделать. Я пытаюсь использовать версию этого примера для создания промежуточного программного обеспечения соединения для базы данных.

1 Ответ

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

Добавить dependency-a в качестве равноправной зависимости в файле my-package package.json,

"peerDependencies": {
    "dependency-a": "1.x"
  }

Теперь, при установке my-package, зависимость-a не будет автоматически установлена, если существует это другая зависимость -a (с той же версией, которую вы объявили), установленная в cool-project.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...