如果我需要一个已经安装为另一个模块的子依赖的npm模块,我还应该用npm安装吗?
例如,kue需要redis,因此红色安装了kue,例如 npm install kue
/node_modules/kue/node_modules/redis
我是否还应该安装redis,因此npm install redis
/node_modules/redis/
或者有没有办法在我的require语句中添加对kue安装的redis的引用
require("/node_modules/kue/node_modules/redis")
而不是
require ("redis")
还是有更好的方法吗?
答案 0 :(得分:0)
只需在本地安装redis。
如果你想要一个与kue一起安装的redis版本,那该怎么办?如果更新kue版本时redis版本突然改变怎么办?
只要require(module)
按预期工作,您就不应该关心node_modules的内容。保存几kbs的源代码是不值得的。
答案 1 :(得分:0)
这是一般的经验法则:
如果您在应用程序的源代码中require('module-name')
,则应将module-name
列为依赖项。将依赖关系视为不透明的实现细节,而不关心它们。
这允许kue依赖于与应用程序不同的redis模块版本,或者完全切换其对不同模块的实现。所有这些都不会影响您的申请。
节点的模块系统与“常规”模块系统(例如Ruby)不同,因为同一模块的多个版本可以在同一过程中加载而不会引起冲突。起初感觉有点偏,但只要顺其自然,你会很快看到好处。我怀疑当社区进一步探索Node的这个方面时,我们会看到一些有趣的项目出现以利用它。
答案 2 :(得分:0)