Node.js 依赖项作为单例

标签 node.js npm

我正在尝试创建自己的 npm 包 my-package,它依赖于依赖项 dependency-a,并在依赖于 my-packagedependency-a 的某些项目 cool-project 中使用。

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

依赖项-a:

export const someVar = 0;

我的包裹:

import depA from 'dependency-a'

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

酷项目:

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

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

如果 myPackagecool-project 的一个模块,上面的方法就可以工作,但是由于我希望 my-package 成为一个独立的 npm 模块,当我尝试在 cool-project 中链接它时,它似乎依赖于 dependency-a 的单独版本。

有没有办法创建一个 npm 模块,可以修改第三方库的单例,并自动在依赖它的两个模块之间共享它。我正在使用 babel/webpack 构建 my-package 所以如果有办法做到这一点,那么这也适合我!

旁注:我知道我可以做一些类似从 my-package 返回 depA 的事情 - 这对于我需要做的事情来说是行不通的。我正在尝试使用此示例的一个版本来为数据库创建连接中间件。

最佳答案

dependency-a 添加为 my-packagepackage.json 文件中的对等依赖项,

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

现在,安装my-package时,如果cool-project<中安装了另一个依赖项-a(与您声明的版本相同),则不会自动安装依赖项-a/.

关于Node.js 依赖项作为单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60519416/

相关文章:

javascript - LESS — data-uri 画家 mixin

Node.js 使用选项(http 或 https)直接请求 URL

ios - 在 nodejs 上运行的 sprite-kit 游戏

node.js - React 无法编译reactLifecyclesCompat 错误

npm - Yarn 安装同一个包的多个版本

node.js - `npm update` 之后无法再发布 VS Code 扩展吗?

node.js - 使用 chalk NPM 模块的终端样式(控制字符)

javascript - 编译模块化客户端 Javascript

javascript - Uncaught TypeError : ctorParameters. 映射在更新到 Angular 7 后不是一个函数

node.js - Node Js - 将数据导出到 Excel 时在单元格中进行文本换行