Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js “新产品管理”;文件系统,如;私有依赖关系的管理_Node.js_Npm - Fatal编程技术网

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中的代码所需的一切)
当前解决方案 所以,对于开发,我用一个npm链接来解决这个问题。因此:

  • 我没有在“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”现在是可能的,但需要注意:)