Npm for" file-system-like"私有依赖的管理

时间:2014-05-27 13:48:15

标签: node.js npm

我试图进行此设置:

  • root是与git项目对应的文件夹
  • root / projectA是节点模块
  • root / projectB是一个节点模块,需要projectA。

一些非常重要的约束

  • 我不想将任何这些节点项目发布到npm.org
  • 我不能为每个项目提供不同的git存储库
  • projectA在开发过程中始终更改 ,因此每次更改文件时都必须重新发布
  • 最后,我希望能够分发"包含projectB / node_modules / projectA(在projectB中运行代码所需的一切)的zip文件

当前解决方案

因此,对于开发,我使用单个npm链接解决了这个问题。所以:

  • 宣布" projectA"在" projectB"的package.json中(如果我这样做了,那么'npm install'理所当然地抱怨该项目在npm中不可用)
  • 每个新开发者都必须做三个步骤:
    • checkout root
    • cd root / projectB
    • npm link ../ projectA

随着依赖关系数量的增加,这变得越来越痛苦。 此外,依赖项安装在本地"和链接,因此制作"发布"

潜在解决方案的问题

据我所知:

  • 使用"私人存储库"像reggie,或实际的npm镜像,需要我们" npm发布" projectB每次改变;这对发展来说是不可接受的
  • git不起作用,因为我们所有的节点项目都在同一个git项目中
  • 本能地,我想在我的package.json中使用相对路径,但few years now已拒绝此功能。这可能意味着有一个明显的解决方案,我很想念。

有没有办法处理这个问题,而不必每次更改一行都发布所有内容?

由于

1 个答案:

答案 0 :(得分:0)

拥有这样的结构应该可行(我在本地测试):

root/ node_modules/ projectA/ projectB/

另外,请确保在您的项目中添加"private": true' package.json并添加类似

的内容
"dependencies": {
    "projectA": "*"
},

到你的projectB' package.json。