我正在尝试创建自己的 npm 包 my-package
,它依赖于依赖项 dependency-a
,并在依赖于 my-package
和 dependency-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
如果 myPackage
是 cool-project
的一个模块,上面的方法就可以工作,但是由于我希望 my-package
成为一个独立的 npm 模块,当我尝试在 cool-project
中链接它时,它似乎依赖于 dependency-a
的单独版本。
有没有办法创建一个 npm 模块,可以修改第三方库的单例,并自动在依赖它的两个模块之间共享它。我正在使用 babel/webpack 构建 my-package
所以如果有办法做到这一点,那么这也适合我!
旁注:我知道我可以做一些类似从 my-package
返回 depA
的事情 - 这对于我需要做的事情来说是行不通的。我正在尝试使用此示例的一个版本来为数据库创建连接中间件。
最佳答案
将 dependency-a
添加为 my-package
的 package.json
文件中的对等依赖项,
"peerDependencies": {
"dependency-a": "1.x"
}
现在,安装my-package
时,如果cool-project<中安装了另一个依赖项-a(与您声明的版本相同),则不会自动安装依赖项-a/
.
关于Node.js 依赖项作为单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60519416/