升级Angular与Node.js 16后无法发布npm包至GitHub Packages
Angular 14升级后私有库发布仓库地址识别错误问题
问题背景
将Angular 12库升级至Angular 14,同步升级Node.js到16.20.2。库为GitHub私有仓库,构建产物输出到dist/ngx-components目录。旧版本环境下发布正常,升级后发布时出现仓库地址解析错误。
关键配置信息
库根目录package.json的核心配置:
{ .... "repository": { "url": "git@github.com:[PRIVATE NAMESPACE]/platform-ui-components.git" }, "publishConfig": { "registry":"https://npm.pkg.github.com/" } }
错误日志
发布时触发如下错误:
error command git --no-replace-objects ls-remote ssh://git@github.com/dist/ngx-components.git
系统错误将dist/ngx-components路径拼接为仓库地址,正确地址应为ssh://git@github.com:[PRIVATE NAMESPACE]/platform-ui-components.git。
解决方案
修正dist目录自动生成的package.json
Angular构建时会在dist/ngx-components下自动生成package.json,其中repository字段可能被错误覆盖。可通过根目录的ng-package.json指定构建后产物的仓库信息,确保与根配置一致:{ "$schema": "./node_modules/ng-packagr/ng-package.schema.json", "dest": "./dist/ngx-components", "lib": { "entryFile": "src/public-api.ts" }, "repository": { "url": "git@github.com:[PRIVATE NAMESPACE]/platform-ui-components.git" } }完善repository字段的完整结构
在根目录package.json中补充repository的type和directory属性,避免工具解析歧义:"repository": { "type": "git", "url": "git@github.com:[PRIVATE NAMESPACE]/platform-ui-components.git", "directory": "projects/ngx-components" // 若库在projects子目录下需指定对应路径 }规范发布命令执行方式
确保发布命令的工作目录正确,或直接指定完整的dist路径,避免相对路径解析错误:npm publish ./dist/ngx-components --registry=https://npm.pkg.github.com/清理缓存后重新构建
清除Angular构建缓存与npm缓存,避免旧配置残留影响:ng clean npm cache clean --force npm run build
内容的提问来源于stack exchange,提问作者Deewendra Shrestha
相关产品推荐
相关产品推荐

