2014-09-05 91 views
2

设置:在多个应用中使用NPM peerDependencies

models

  • 常见猫鼬模型
  • peerDependencies: “猫鼬”

app

  • 依赖关系: “猫鼬”, “模式”
  • 通过app> npm link models与模型链接

问题:

在开发models,我需要node_modules下安装猫鼬,否则就”找到猫鼬。

然而,在使用时modelsapp,如果modelsnode_modules下存在的猫鼬,它使用的不是与app分享猫鼬的同一个实例该副本。

我现在做这项工作的方式是在开发models时安装猫鼬,然后在app下使用时删除它。我已经看过parent-require,但这似乎只解决了问题与npm链接不从父找到包,而不是必须删除/安装node_module问题(或者我做这个不正确?)

相关: Sharing a Mongoose instance between multiple NPM packages

回答

8

我已经采取了使用require.main.require代替require为需要共享实例模块。例如,require.main.require('mongoose')将保证只使用顶级猫鼬。

+1

这是如何与babel导入工作? – justingordon 2016-03-13 00:28:19

+0

对于那些来自Google的人来说,这是一个潜在的好消息。 [Node v6最终可能包含此bug的补丁。](https://github.com/nodejs/node/pull/5950#issuecomment-213053455)。 – Chev 2016-04-21 19:41:58