从Nx仓库通过Semantic Release发布到GitHub Packages遇权限问题求助
问题分析与解决方案
核心问题定位
你遇到的Permission not_found: owner not found错误,核心原因是包名的Scope与GitHub用户名/组织名不匹配,同时可能伴随Token权限或仓库配置的问题。
1. 包名Scope必须与GitHub用户名完全一致
你的package.json中包名是@thijsfranck/example,但GitHub用户名是thijs-franck(从仓库URLhttps://github.com/thijs-franck/example-repo.git可看出)。GitHub Packages要求包的Scope(@xxx部分)必须和你的GitHub用户名/组织名完全一致,包括连字符这类符号。
修正方法:
修改package.json的name字段:
{ "name": "@thijs-franck/example" }
2. 修正repository字段的directory配置
你的repository.directory写的是thijsfranck/example,但这个字段是用来指定包在仓库内的子目录路径,不是完整的用户/仓库结构。如果你的包代码在仓库的example目录下,应该改为:
"repository": { "type": "git", "url": "https://github.com/thijs-franck/example-repo.git", "directory": "example" }
3. 验证NPM_TOKEN的权限与归属
- 确保你使用的
NPM_TOKEN是属于thijs-franck用户生成的,并且勾选了write:packages、read:packages权限,同时拥有目标私有仓库的访问权限。 - 生成Token时建议选择个人访问令牌(classic),新手用这类令牌更易配置权限。
4. 确认请求地址的正确性
你提到的https://npm.pkg.github.com是GitHub Packages的官方NPM registry地址,这个是完全正确的,所有发布到GitHub Packages的请求都要指向这个地址,无需修改。
5. Semantic Release配置补充(可选)
如果上述修正后仍有问题,可以在release.config.js中明确指定npm插件的registry,确保publishConfig生效:
module.exports = { plugins: [ '@semantic-release/npm', { npmPublish: true, registry: 'https://npm.pkg.github.com' } ] };
内容的提问来源于stack exchange,提问作者thijsfranck
相关产品推荐
相关产品推荐

