我的Node包需要两个具有相同依赖关系的包。那好吗?

时间:2012-09-26 19:32:06

标签: node.js package npm

我的节点包目前需要expresslocomotiveexpresslocomotive都需要commander个包。

当每个包(expresslocomotive)需要指挥官时,这将解析为两个不同的文件。基于Node's documentationcommander包将被执行两次,并且我的应用程序中将有两个commander包的主副本,每个文件一个。

现在,基于我对require.resolve()的理解,require()会一直搜索目录树,直到机器的根目录(或者在允许的情况下尽可能远),并查看每一个./node_modules/commander沿途的目录。

我是否应该将commander包(以及所有其他重复的包)合并到我应用根目录的node_modules文件夹中?

编辑时间12:58:我也注意到重复的包可能不是同一个版本。 expresscommander 0.6.1locomotivecommander 1.0.4。另一个依赖项expresslocomotive分享mkdirp分别位于0.3.30.3.4

1 个答案:

答案 0 :(得分:2)

每个软件包在安装时在各自的node_modules文件夹中安装自己的依赖项。

例如,express将拥有它自己的node_modules文件夹,其中包含特定版本的commander,而另一个模块将拥有它自己。

确认;

mkdir someNewProject && cd someNewProject
npm install express locomotive

然后看看这些已安装模块的目录结构;

ls node_modules/express
ls node_modules/locomotive

您应该注意到它们每个都有自己的node_modules文件夹及其依赖项。因此,我不建议尝试制作一个普通的指挥官包。