2014-09-05 77 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