.npmrc中以双斜杠'//'开头的行是什么意思?

Jol*_*ger 1 node.js npm

我天真地假定带有双斜杠('//')的.npmrc行表示注释,但是显然不是这样,因为删除它们时,我无法发布到本地注册表。

例:

registry=https://npm.myregistry.io/
//email=me@mydomain.com
//npm.myregistry.io/:_authToken="Pgwb34F123EQdHqE7OoZA=="
Run Code Online (Sandbox Code Playgroud)

如果删除以上//行,则将结果发布到

npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`
Run Code Online (Sandbox Code Playgroud)

我在npmrc文档或ini模块解析器文档中找不到对该语法的任何引用。我假设它与合成属性有关?

mih*_*hai 5

//.npmrc或任何其他.ini文件中没有特殊含义。

ini语法为key = value。因此,在这种情况下,关键是//npm.myregistry.io/:_authToken

这是一个相对于协议的URL,这意味着将从当前页面自动获取该协议的URL(您实际上可以//google.com在浏览器中键入,并且应该带您进入https://google.com

请注意,这不一定是npm用于身份验证的URL。这只是开发人员选择的一种格式,用于将authToken(或其他值)保存在与注册表URL相同的字符串中。

  • 对我来说,当在浏览器(FF、Safari 和 Chrome)中输入“//google.com”时,它会解析为“file:////google.com” (3认同)
  • 提出 github 问题来记录格式与理解格式是正交的。我接受你的答案,因为它实际上是正确的。我想说的是,使用协议相关 URL 来编码 ini 键值对的实现决策肯定是……怎么说……不是我会选择的。 (3认同)
  • 很好的解释@mihai。但是,为什么键名是 `//npm.myregistry.io/:_authToken` 而不是 `npm.myregistry.io/:_authToken`(即没有 `//` 前缀)?为什么在 _.npmrc_ 的上下文中使用与协议相关的 URL 作为键名?在我看来,相对于协议的 URL 作为值而不是键更有意义。 (2认同)
  • 好的,协议相关的 URL 是合理的,除了其他条目也有一个 // 似乎不是 URI,即在上面的示例中,有 //email= (2认同)