我正在开发一个模块,我尝试尽可能通用(让我们说BaseModule),我想在另一个模块中将它扩展到目前的目的(让我们说ChildModule)
所以ChildModule以:
开头require('BaseModule');
所以我添加了BaseModule
作为ChildModule
的依赖项。但是当我想在我的真实项目中使用它们时,我无法安装它们。安装BaseModule
会删除ChildModule
,并安装ChildModule
移动BaseModule
,之后我的代码无法访问它。
这两个模块都只在git存储库上(即尚未发布)。
有趣的是,猫鼬也是ChildModule
的依赖,我没有这个问题。所以我想我忘记了BaseModule
中的某些内容,但我不知道是什么......
它有点类似于这个问题NPM dependencies shared by dependencies,它应该在我的NPM版本(5.6)上修复。这个issue也很相似,但正如我之前所说,我不认为这是一个错误。
有没有办法拥有嵌套依赖?如果不是,进行这种扩展的标准方法是什么?
以下是不同的package.json:
BaseModule' package.json
{
"name": "BaseModule",
"main": "index.js",
"repository": {
"type": "git",
"url": "git+ssh://.../BaseModule.git"
},
"bundledDependencies": false,
}
ChildModule:
{
"name": "ChildModule",
"main": "index.js",
"repository": {
"type": "git",
"url": "git+ssh://.../ChildModule.git"
},
"bundledDependencies": false,
"dependencies": {
"mongoose": "^4.13.9",
"BaseModule": ".../BaseModule"
}
}
和项目本身:
{
"name": "Project",
"dependencies": {
"mongoose": "^4.13.9",
"ChildModule": ".../ChildModule",
"BaseModule": ".../BaseModule",
"andALotMore": "*"
}
}
...
代表我的存储库的正确地址。