VSTS 软件包提要:配置客户端以使用 vsts 提要后无法安装公共 npm 软件包
Posted
技术标签:
【中文标题】VSTS 软件包提要:配置客户端以使用 vsts 提要后无法安装公共 npm 软件包【英文标题】:VSTS package feed: Cannot install public npm packages after configuring client to work with vsts feed 【发布时间】:2018-04-02 21:36:43 【问题描述】:我创建了一个 .npmrc 文件,将我配置为使用 VSTS pacakge 提要,但我的所有公共依赖项都不会安装(你知道,react,lodash ...)
似乎一旦我将 .npmrc 文件配置为指向我的私人提要,所有公共包都不再可访问。
因为与 Nuget 不同,npm 不支持多个包注册表(这里有一个相关的SA question),所以我目前坚持运行 npm install 两次——一次没有和 .npmrc 文件来获取公共依赖项,一次使用 .npmrc 文件获取私有文件。
VSTS 不镜像/代理公共注册表吗?如果不是 - 我是否应该使用 .npmrc 文件的 2 个不同版本运行 npm install 两次?
【问题讨论】:
开启上游源后问题解决了吗? @starain-MSFT 我实际上是通过设置私有包的范围来解决这个问题的(即,我的私有包的包名称类似于@scope/package
。然后我将我的 .npmrc 配置为指向vsts 包供稿仅适用于我的@scope
。因此公共包将转到 npmhs,而我的包将转到我的私人 vsts 供稿。
【参考方案1】:
我对私有 npm 提要没有管理员权限。此外,vsts-npm-auth 仅适用于 windows。
但是,我使用的私有包是有范围的。 package.json 中的依赖项如下所示:
...
"dependencies":
"@scope-name/package-name": "^1.0.1",
...
将作用域注册表添加到 .npmrc 对我有用。
@scope-name:registry=https://npm.package.feed.com/registry
【讨论】:
【参考方案2】:处理它的简单方法是为您的 Feed 启用上游来源。在此之后,如果包不存在于您的提要中,它将查找包形式 npmjs.com。
Use packages from npmjs.com
另一种方式是可以在命令中指定注册表,例如:npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
。
另一方面,我们可以将提要添加到项目的 .npmrc 文件中,而不是在用户文件夹 (c:\Users[username]) 中,然后如果当前上下文在其他路径中,它会使用公共注册表。
【讨论】:
上游来源是正确的方法。在最后一段中,npm 不能以这种方式工作。来自docs.npmjs.com/files/npmrc,“每个 [.npmrc] 都已加载,配置选项按优先级顺序解析。例如,userconfig 文件中的设置将覆盖 globalconfig 文件中的设置。”这与 NuGet 不同,后者确实结合了它发现的多个 NuGet.config 文件。 @Alex 如果您从没有 .npmrc 文件的其他文件夹运行 npm 命令,它只使用全局配置文件。以上是关于VSTS 软件包提要:配置客户端以使用 vsts 提要后无法安装公共 npm 软件包的主要内容,如果未能解决你的问题,请参考以下文章