如何用npm处理nodejs中的本地包依赖
我们应该如何处理在其他本地包中依赖的本地包呢?
为了简单起见,假设我们有以下软件包
-
api
– 快速应用程序 -
people
– 与人打交道的一揽子计划 -
data-access
– 一个处理数据访问的包
然后依赖是
-
api
依赖于people
-
people
依赖于data-access
目前,我们将这些依赖关系设置为文件依赖关系。
即使api
package.json会有
"dependencies": { "people": "file:../people" }
麻烦的是,当我们对一个软件包进行更新时,我们发现它是一个PITA,并且需要依赖于它的其他软件包中的更改。
我们想到的选项是:
-
npm install – 但是如果进行了更改,这将不会覆盖以前安装的软件包,所以我们必须从node_modules目录中删除旧的软件包,然后重新运行npm install …,如果软件包依赖性很深,那么它会变得非常糟糕。
-
npm链接 – 我们没有出售的想法,因为它不能生存的版本控制…现在想想,也许我们有一种本地构build脚本,将运行
npm link
命令为我们…这它可以生存版本控制。 这会是一个g job的工作吗? -
咕噜咕噜 – 我们还没有深入这一点,但它感觉像一个很好的方向。 有一点谷歌search我们来到这个: https : //github.com/ahutchings/grunt-install-dependencies
那么,什么样的select最适合我们的情况呢?
还有其他的select,我们还没有想到呢?
PS。 我们是一个.NET商店,在节点上做一个PoC,所以假设我们什么都不知道!
PPS。 如果您坚信我们的项目设置不正确,我们不应该有更小的单个包装,请在评论中告诉我一些关于这个主题的阅读链接。
所以,我同意用“很多小包装”通常是一个好主意。 如果你还没有,请查看12factor.net。
这就是说,在你的问题的具体答案我会说你最好的select是主要考虑如何维护他们。
如果“子组件”只是你的应用程序的一部分(例如数据访问所暗示的),那么我会把它们放在同一个文件夹结构中, 而不是将它们映射到package.json中,而只是require
它们你需要他们的地方 在这种情况下,所有的版本一起,是同一个git仓库的一部分。
如果你真的想或者需要把它们全部保存在不同的git仓库中,那么你可以做npm链接,但是说实话我发现在package.json中使用URL语法更有用:
dependencies: { "people" : "git://path.to.git:repo@version.number" }
然后,当你想明确地更新你的一个依赖关系时,你只需要在你的package.json中npm install
版本号并再次运行npm install
。