Han*_*Han 6 git github npm package.json
我看到了一个 npm 存储库,在 package.json 中被称为git+ssh://git@github.com/xxx.git
。我知道这是 ssh 协议,但我不知道 git+ssh 在克隆存储库时做什么,我只使用git@github.com/xxx.git
. 我用谷歌搜索了一下,但找不到任何结果。
当通过 git 托管 npm 包时,npm 还需要知道使用哪种传输协议将包文件从存储库传输到客户端。为此,存在以下选项:ssh、https、http、file(请参阅https://docs.npmjs.com/cli/install)。
\n\nnpm 的创建者决定将此信息放在协议名称中,用符号分隔信息,+
使其变得更加示意性。因此,当npm install
迭代您的依赖项并看到与之相关的依赖项时git+ssh
,它知道它将通过连接到存储库ssh
,然后使用本地git
二进制文件在本地签出项目文件。
我想他们也可以将协议命名gitwithssh
为 in gitwithssh://git@github.com/xxx.git
,但git+ssh
看起来更简洁且逻辑上分离,因此更容易通过正则表达式进行解析。
这是 npm 源代码中实际负责将协议信息拆分为type
(= git
) 和实际协议(例如ssh
)的部分:https://github.com/npm/npm-package-arg/blob/v7 .0.0/npa.js#L221
\n\n\n我只使用 git@github.com/xxx.git。
\n
您不能使用此格式将包注册为 npm 的依赖项。尝试执行npm i git@github.com/xxx.git
\xe2\x80\x93 它不会工作。该格式只能使用,例如via git clone
。
但是,您可以在使用 ssh 协议作为前缀时使用此格式:ssh://git@github.com/xxx.git
。这实际上是 npm 在幕后使用的“git+ssh”的“标准化”形式(另请参阅https://github.com/npm/normalize-git-url如何将您的转换git+ssh://...
为ssh://git@...
)。
归档时间: |
|
查看次数: |
412 次 |
最近记录: |