从 GitHub 个包中添加库时需要指定两次范围
Need to specify scope twice when adding library from GitHub Packages
在我们的 GitHub 组织中,我们有一个内部 Node.js 库的私有存储库。我已经设置了一个 Actions Workflow 来构建一个包并将其发布到 GPR,只要发布被剪切和标记。按照文档 here,我用我们的组织名称限定了包的范围,并指定了 repository
和 publishConfig
值。库的 package.json
文件类似于:
{
"name": "@org-name/lib-name",
"version": "1.1.1",
"repository": "git://github.com/org-name/lib-name.git",
"publishConfig": {
"registry": "https://npm.pkg.github.com"
},
...
}
我在尝试使用 Yarn 将库添加到另一个项目时遇到问题。具体来说,当使用 yarn add
命令时,我需要指定两次范围才能找到库,但这也会导致进一步的问题(大概是因为第二个“@”符号应该表示一个版本) .
在消费项目中,我添加了一个 .yarnrc
文件,其中包含以下 GPR 条目:
"@org-name:registry" "https:/npm.pkg.github.com"
如果我随后使用命令 yarn add @org-name/lib-name --verbose
,我会得到以下信息:
[1/4] Resolving packages...
verbose 0.645526824 Performing "GET" request to "https://npm.pkg.github.com/@org-name%2flib-name".
verbose 1.056449407 Request "https://npm.pkg.github.com/@org-name%2flib-name" finished with status code 401.
verbose 1.066291664 Error: Couldn't find package "@org-name/lib-name" on the "npm" registry.
at MessageError.ExtendableBuiltin (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:721:66)
at new MessageError (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:750:123)
at NpmResolver.<anonymous> (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:50864:15)
at Generator.next (<anonymous>)
at step (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:310:30)
at /usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:321:13
at processTicksAndRejections (internal/process/task_queues.js:95:5)
error Couldn't find package "@org-name/lib-name" on the "npm" registry.
然而,如果我使用命令 yarn add @org-name/@org-name/lib-name
,它似乎找到了 东西 但仍然无法正常工作:
yarn add v1.22.15
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ @org-name/@1.0.1
info All dependencies
└─ @org-name/@1.0.1
请注意,上面未引用实际的库名称。这反映了对 package.json
依赖项的更新,如下所示:
{
...
"dependencies": {
"@babel/core": "^7.16.0",
"@org-name/": "org-name/lib-name",
...
},
...
}
@org-name
文件夹也已添加到 node_modules
下,其内容与 lib-name
项目相似。
在这个阶段,我已经阅读并进行了实验,以至于我一遍又一遍地尝试同样的事情而迷失了方向。我希望有人能指出我在上面的配置中犯的愚蠢的简单错误。谁能建议我可以从这里尝试的东西?我的期望是简单地使用 yarn add @org-name/lib-name
在其他项目中使用该库。
如果那是私人包裹,您可能会缺少授权令牌。尝试将此添加到您的 .npmrc:
//npm.pkg.github.com/:_authToken=<<YOUR GITHUB PAT>>
@org-name:registry=https://npm.pkg.github.com
在我们的 GitHub 组织中,我们有一个内部 Node.js 库的私有存储库。我已经设置了一个 Actions Workflow 来构建一个包并将其发布到 GPR,只要发布被剪切和标记。按照文档 here,我用我们的组织名称限定了包的范围,并指定了 repository
和 publishConfig
值。库的 package.json
文件类似于:
{
"name": "@org-name/lib-name",
"version": "1.1.1",
"repository": "git://github.com/org-name/lib-name.git",
"publishConfig": {
"registry": "https://npm.pkg.github.com"
},
...
}
我在尝试使用 Yarn 将库添加到另一个项目时遇到问题。具体来说,当使用 yarn add
命令时,我需要指定两次范围才能找到库,但这也会导致进一步的问题(大概是因为第二个“@”符号应该表示一个版本) .
在消费项目中,我添加了一个 .yarnrc
文件,其中包含以下 GPR 条目:
"@org-name:registry" "https:/npm.pkg.github.com"
如果我随后使用命令 yarn add @org-name/lib-name --verbose
,我会得到以下信息:
[1/4] Resolving packages...
verbose 0.645526824 Performing "GET" request to "https://npm.pkg.github.com/@org-name%2flib-name".
verbose 1.056449407 Request "https://npm.pkg.github.com/@org-name%2flib-name" finished with status code 401.
verbose 1.066291664 Error: Couldn't find package "@org-name/lib-name" on the "npm" registry.
at MessageError.ExtendableBuiltin (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:721:66)
at new MessageError (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:750:123)
at NpmResolver.<anonymous> (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:50864:15)
at Generator.next (<anonymous>)
at step (/usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:310:30)
at /usr/local/Cellar/yarn/1.22.15/libexec/lib/cli.js:321:13
at processTicksAndRejections (internal/process/task_queues.js:95:5)
error Couldn't find package "@org-name/lib-name" on the "npm" registry.
然而,如果我使用命令 yarn add @org-name/@org-name/lib-name
,它似乎找到了 东西 但仍然无法正常工作:
yarn add v1.22.15
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency.
info Direct dependencies
└─ @org-name/@1.0.1
info All dependencies
└─ @org-name/@1.0.1
请注意,上面未引用实际的库名称。这反映了对 package.json
依赖项的更新,如下所示:
{
...
"dependencies": {
"@babel/core": "^7.16.0",
"@org-name/": "org-name/lib-name",
...
},
...
}
@org-name
文件夹也已添加到 node_modules
下,其内容与 lib-name
项目相似。
在这个阶段,我已经阅读并进行了实验,以至于我一遍又一遍地尝试同样的事情而迷失了方向。我希望有人能指出我在上面的配置中犯的愚蠢的简单错误。谁能建议我可以从这里尝试的东西?我的期望是简单地使用 yarn add @org-name/lib-name
在其他项目中使用该库。
如果那是私人包裹,您可能会缺少授权令牌。尝试将此添加到您的 .npmrc:
//npm.pkg.github.com/:_authToken=<<YOUR GITHUB PAT>>
@org-name:registry=https://npm.pkg.github.com