如何将发布到GitHub Packages注册表的NPM包下载为zip压缩包?
GitHub Packages 私有NPM包指定版本下载方案
前置准备
提前创建具备read:packages权限的GitHub个人访问令牌(PAT),若包属于组织账号,需确保令牌已获得对应组织的访问授权。
方案1:通过NPM registry获取(适合自动化脚本集成)
- 先完成NPM的GitHub Packages身份校验:
npm config set //npm.pkg.github.com/:_authToken 你的PAT值 - 执行命令获取指定版本包的下载地址:
npm view @<用户名/组织名>/<包名>@<版本号> dist.tarball
示例:npm view @testuser/test-pkg@1.0.0 dist.tarball - 使用curl带身份信息直接下载包文件(默认是tgz格式):
curl -L -O -H "Authorization: token 你的PAT值" <上一步获取的下载地址> - 如需转换为zip格式,执行如下命令即可:
tar -xzf <下载得到的tgz文件名> && zip -r <目标压缩包名>.zip package/
方案2:通过GitHub REST API直接获取
- 调用包版本查询接口,个人账号发布的包接口格式为:
GET https://api.github.com/users/<用户名>/packages/npm/<包名>/versions/<版本号>
组织账号发布的包接口格式为:GET https://api.github.com/orgs/<组织名>/packages/npm/<包名>/versions/<版本号> - 请求时需要携带两个头信息:
Authorization: token 你的PAT值Accept: application/vnd.github.v3+json
- 接口返回结果中提取
tarball_url字段值,即为该版本包的下载地址,同方案1用curl下载后按需转zip即可
注意事项
- 所有涉及的包名必须携带作用域前缀,即
@<用户名/组织名>/<包名>格式,不可省略前缀直接使用短包名 - 自动化脚本中可以把上述步骤合并,不需要存储中间文件即可完成下载转格式的操作
内容的提问来源于stack exchange,提问作者Harshal Patil
相关产品推荐
相关产品推荐

