Node.js “新产品管理”;文件系统,如;私有依赖关系的管理
我正在尝试进行以下设置:Node.js “新产品管理”;文件系统,如;私有依赖关系的管理,node.js,npm,Node.js,Npm,我正在尝试进行以下设置: root是与git项目相对应的文件夹 root/projectA是一个节点模块 root/projectB是一个节点模块,需要projectA 一些非常重要的限制 我不想将这些节点项目发布到npm.org 我不能为每个项目使用不同的git存储库 projectA在开发过程中一直在更改,因此每次更改文件时都必须重新发布它是不可接受的 最后,我希望能够“分发”一个包含projectB/node\u modules/projectA的zip(运行projectB中的代码
- root是与git项目相对应的文件夹
- root/projectA是一个节点模块
- root/projectB是一个节点模块,需要projectA
- 我不想将这些节点项目发布到npm.org
- 我不能为每个项目使用不同的git存储库
- projectA在开发过程中一直在更改,因此每次更改文件时都必须重新发布它是不可接受的
- 最后,我希望能够“分发”一个包含projectB/node\u modules/projectA的zip(运行projectB中的代码所需的一切)
- 我没有在“projectB”的package.json中声明“projectA”(如果我声明了,“npm install”正确地抱怨该项目在npm中不可用)
- 每个新开发人员都必须执行三个步骤:
- 签出根
- cd根目录/projectB
- npm链接../projectA
- 使用像reggie这样的“私有存储库”或实际的npm镜像,需要我们在每次更改projectB时“npm发布”projectB;这对发展来说是不可接受的
- git将不起作用,因为我们所有的节点项目都在同一个git项目中
- 出于本能,我希望在我的package.json中使用相对路径,但是这个特性已经被拒绝了一段时间。这可能意味着有一个明显的解决方案,我没有李>
谢谢有这样一个结构应该可以正常工作(我在本地测试了它):
根目录/
节点单元/
项目A/
项目B/
还要确保在项目的package.json中添加“private”:true
,并添加如下内容
"dependencies": {
"projectA": "*"
},
到projectB的package.json。root本身是否需要是npm项目?是否应该将“projectA”和“projectB”定义为依赖项?根路径不必有package.json。如果愿意的话,您可以从根路径中的某个javascript文件中获取()项目模块。“projectB”如何知道在哪里查找projectA?在projectB中运行“npm安装”将失败,除非我尝试避免使用“npm链接../projectA”。ping,你最后做了什么?这些答案似乎不能很好地回答这个问题。我认为,如果您在顶层依赖于A,那么B可以依赖于A,但不需要安装自己的嵌套版本(特别是使用npm-3的扁平dep树),我们混合使用了“grunt链接”、“npm链接”和本地依赖(“foo”:“../../foo”现在是可能的,但需要注意:)