npm太多的本地依赖?

时间:2014-06-23 00:20:06

标签: node.js git ssh dependencies npm

尝试从git submodule工作流程转移到npm install工作流程。我有大约60个独立的库,并将每个库转换为适当的npm模块。现在我package.json有一个非常大的dependencies部分,其中每一行都是这样的:

"libraryN": git+ssh://git@gitlab.company.local:libraryN.git

这样有60条线。每个库可能都有自己的依赖项,但大多数都没有依赖项。而且他们彼此独立。

现在,当我执行npm install时,它会暂停几秒钟(构建单个依赖项列表,我认为)并且因以下SSH错误而失败:

ssh_exchange_identification: Connection closed by remote host

做一些实验我发现限制package.json中的依赖项数量会有所帮助。因此,拥有10个或更少的依赖项总是可以正常工作而没有任何错11到14之间偶尔会失败,15次以上会一直失败。

看起来它与我本地git存储库服务器的同时ssh连接有关。检查了它的日志 - 没有发现任何可疑的信息。

问题 - 如何一次安装(和管理)所有60个依赖项并避免与ssh相关的问题?

谢谢。

3 个答案:

答案 0 :(得分:1)

我有同样的问题,似乎能够通过增加MaxStartups和MaxSessions来解决它(默认情况下sshd有10个)

/etc/ssh/sshd_config:

...
MaxStartups 60
MaxSessions 60

答案 1 :(得分:0)

另一种解决方案可能是使用SSH连接池。将其放入~/.ssh/config

Host *
   ControlMaster auto
   ControlPath /tmp/%r@%h:%p
   ControlPersist yes
EscapeChar ~

答案 2 :(得分:0)

您可能需要减少同时连接数,默认情况下为50。

以下npm配置允许限制为3个最大同时连接:

npm set maxsockets 3

自npm@3.8.0起,CLI已允许此选项。有关详细信息,请参阅this link