
后端【免费下载链接】google-api-nodejs-clientGoogles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.项目地址https://gitcode.com/gh_mirrors/go/google-api-nodejs-client点击查看免费下载本文以src/apis/chromewebstore/CHANGELOG.md的完整版本记录为主线结合同目录下的源码与发现文档系统讲解googleapis/chromewebstore客户端包的演进脉络、Node.js 版本兼容策略以及 v1.1 / v2 两代 API 的完整方法面与实战用法。读完本文你将能读懂该包的每次破坏性变更与 API 更新含义并掌握用 Node.js 上传、查询、发布和管理 Chrome 扩展的完整流程。一、包定位Chrome Web Store API 的官方 Node.js 客户端googleapis/chromewebstore是 google-api-nodejs-client 仓库当前根目录即该仓库中按 API 独立拆分的子包之一。它封装了 Chrome Web Store API为开发者提供关于应用与扩展的数据访问以及用于管理它们的开发者工具。从src/apis/chromewebstore/package.json可以看到该包当前版本为7.0.0对外提供main: build/index.js与types: build/index.d.ts唯一运行时依赖是googleapis-common ^9.0.0这意味着所有鉴权、请求构造、媒体上传与流式响应能力都复用了 googleapis 生态的公共基础设施。包入口src/apis/chromewebstore/index.ts通过getAPI注册了两个 API 版本export const VERSIONS { v1.1: chromewebstore_v1_1.Chromewebstore, v2: chromewebstore_v2.Chromewebstore, };也就是说同一个chromewebstore函数既可以通过google.chromewebstore(v1.1)调用旧版接口也可以通过google.chromewebstore(v2)调用新版接口。对应发现文档分别位于discovery/chromewebstore-v1.1.jsonrevision 20251015与discovery/chromewebstore-v2.jsonrevision 20260924两者的baseUrl均为https://chromewebstore.googleapis.com/documentationLink均指向https://developer.chrome.com/docs/webstore/api。1.1 安装与初始化作为独立子包直接安装即可使用$ npm install googleapis/chromewebstore如果使用的是仓库根目录的统一入口src/googleapis.ts则通过google对象获取const {google} require(googleapis); const chromewebstore google.chromewebstore(v2);从发现文档discovery/chromewebstore-v2.json的auth.oauth2.scopes可以看到该 API 只有两个 OAuth 2.0 范围Scope权限说明https://www.googleapis.com/auth/chromewebstore查看、编辑、更新或发布你有权访问的 Chrome Web Store 扩展、主题、应用与许可证https://www.googleapis.com/auth/chromewebstore.readonly只读查看与下载你有权访问的扩展、应用及许可证二、CHANGELOG 全量版本演进12 个版本的完整轨迹src/apis/chromewebstore/CHANGELOG.md记录了该包从 2025 年 10 月 9 日首次发布1.0.0到 2026 年 10 月 3 日7.0.0之间共 12 个版本的完整变更历史。下面按时间倒序完整梳理每一条记录原文链接已隐去仅保留实质内容版本发布日期类型变更要点7.0.02026-10-03BREAKING本版本包含破坏性变更同步更新 API 定义0830f896.1.02026-09-23Feature更新 API 定义2c181e76.0.02026-09-14BREAKING所有包all packages再次将 apiary 最低 Node 版本提升到 22issue #40204e5bae05.0.02026-09-09BREAKINGapiary 最低 Node 版本提升到 22issue #4011ec5a6bf4.1.12026-09-09Bug Fix重新加回对 Node 18 的支持eccac1d4.1.02026-09-02Feature/Bug Fix运行代码生成器issue #39925f7d438将生成包中的依赖升级到 Node 22de9d20d4.0.02026-08-03BREAKING运行代码生成器issue #3955c429a9b3.0.02026-05-28BREAKING运行代码生成器issue #392008443b42.0.22025-12-05Bug Fix更新 API 定义f822cb92.0.12025-11-04Bug Fix更新 API 定义a6cbf722.0.02025-10-15BREAKING运行代码生成器issue #38144ba19d01.0.02025-10-09首版更新 API 定义68c1daa2.1 版本节奏背后的生成器机制从版本记录可以清晰看到两类变更的交替出现一类是update the API直接更新 API 定义另一类是run the generator重新运行代码生成器。这正是 google-api-nodejs-client 仓库的自动化机制——所有src/apis/*目录下的.ts文件均由生成器从 discovery 文档产出而非手工维护。每次服务端 API 变更或生成器升级都会触发一次子包版本发布当上游 API 的请求/响应结构发生变化时版本号就会以主版本递增的形式发布并标注 BREAKING CHANGES。2.2 Node.js 版本兼容的反复横跳与最终结论CHANGELOG 中最值得关注的线索是 2026 年 9 月短短两周内 Node 版本策略的多次调整4.1.02026-09-02将生成包中的依赖升级到 Node 224.1.12026-09-09随即加回对 Node 18 的支持说明本次依赖升级曾短暂破坏 Node 18 兼容性并被紧急修复5.0.02026-09-09同一天又决定最低 Node 版本提升到 22属于一次主动的破坏性决策issue #40116.0.02026-09-14五天之后再次强调所有包的最低 Node 版本均为 22issue #4020把 5.0.0 的决策推广到全部子包统一了政策。最终结论以src/apis/chromewebstore/package.json中的engines字段为准当前 7.0.0 要求node 22.0.0。这也意味着如果你仍运行在 Node 18/20 环境只能停留在 4.1.1 及之前的版本要跟进 7.0.0 的 API 更新必须先升级运行时。这是任何引入该依赖的项目在规划升级时必须首先确认的前提。三、v1.1 API经典的 items 资源与方法面v1.1 是 Chrome Web Store API 的经典版本定义于src/apis/chromewebstore/v1.1.ts。该版本只有一个items资源包含四个方法覆盖了增、查、改、发的完整闭环方法HTTP 端点说明items.getGET /chromewebstore/v1.1/items/{itemId}获取你自己的 Chrome Web Store 条目items.insertPOST /chromewebstore/v1.1/items插入上传一个新条目items.updatePUT /chromewebstore/v1.1/items/{itemId}更新一个已有条目items.publishPOST /chromewebstore/v1.1/items/{itemId}/publish发布一个条目3.1 核心 SchemaItem、Item2 与 ItemErrorget、insert、update三个方法都围绕Schema$Item展开src/apis/chromewebstore/v1.1.tscrxVersion条目的 CRX 版本若 projection 为 draft则是草稿的 CRX 版本id条目的唯一 IDitemError操作的人类可读状态详情仅英文与你在 Chrome Web Store 上传应用时看到的错误信息一致kind固定字符串chromewebstore#item用于标识资源类型publicKey条目的公钥uploadState操作状态取值包括FAILURE、IN_PROGRESS、NOT_FOUND、SUCCESS。发布方法publish返回的是Schema$Item2src/apis/chromewebstore/v1.1.ts其status数组可能包含以下状态码NOT_AUTHORIZED、INVALID_DEVELOPER、DEVELOPER_NO_OWNERSHIP、DEVELOPER_SUSPENDED、ITEM_NOT_FOUND、ITEM_PENDING_REVIEW、ITEM_TAKEN_DOWN、PUBLISHER_SUSPENDEDstatusDetail则是对应的可读解释。3.2 v1.1 实战示例查询、上传与发布查询条目只读const {google} require(googleapis); const chromewebstore google.chromewebstore(v1.1); async function main() { const auth new google.auth.GoogleAuth({ scopes: [ https://www.googleapis.com/auth/chromewebstore, https://www.googleapis.com/auth/chromewebstore.readonly, ], }); const authClient await auth.getClient(); google.options({auth: authClient}); const res await chromewebstore.items.get({ itemId: your-extension-id, projection: draft, // 决定返回条目信息的哪个子集 }); console.log(res.data); } main().catch(e {console.error(e); throw e;});发布条目含灰度参数v1.1 的publish支持三个关键参数src/apis/chromewebstore/v1.1.tsdeployPercentage目标部署百分比合法范围[0, 100]设为小于 100 的数值时只有对应比例的用户会被允许获得该更新publishTargetURL 中的发布目标区分大小写取publishTargettrustedTesters或publishTargetdefault默认defaultreviewExemption请求豁免审核并直接发布仅当更新落在可自动校验的清单内时有效API 会用实时数据校验是否可授予豁免。const res await chromewebstore.items.publish({ itemId: your-extension-id, deployPercentage: 100, publishTarget: default, requestBody: { deployPercentage: 100, reviewExemption: false, target: default, }, });四、v2 API面向现代发布流程的方法面v2 是当前主推版本发现文档 revision 20260924定义于src/apis/chromewebstore/v2.ts。它把资源拆成了media与publishers.items两个层次方法语义更贴近真实的开发者工作流资源方法HTTP 端点说明mediauploadPOST /v2/{name}:upload向已有条目上传新包支持媒体上传另提供/upload/v2/...端点publishers.itemscancelSubmissionPOST /v2/{name}:cancelSubmission取消当前活跃的提交可用于撤回待审核的提交publishers.itemsfetchStatusGET /v2/{name}:fetchStatus获取条目状态publishers.itemspublishPOST /v2/{name}:publish提交条目以在商店发布publishers.itemssetPublishedDeployPercentagePOST /v2/{name}:setPublishedDeployPercentage提高已发布修订版的目标部署百分比v2 中所有方法都使用统一的资源名格式publishers/{publisherId}/items/{itemId}对应代码中的name必填参数例如publishers/my-publisher/items/my-item。4.1 上传新包media.uploadmedia.upload在src/apis/chromewebstore/v2.ts中实现同时暴露了普通请求与StreamMethodOptions流式重载。它通过mediaUrl/upload/v2/{name}:upload走媒体上传通道返回Schema$UploadItemPackageResponseconst {google} require(googleapis); const chromewebstore google.chromewebstore(v2); async function main() { const auth new google.auth.GoogleAuth({ scopes: [https://www.googleapis.com/auth/chromewebstore], }); const authClient await auth.getClient(); google.options({auth: authClient}); const res await chromewebstore.media.upload({ name: publishers/my-publisher/items/my-item, requestBody: {}, media: { mimeType: application/zip, body: fs.createReadStream(./extension.zip), }, }); console.log(res.data); // 响应示例 // { crxVersion, itemId, name, uploadState } }响应中的uploadState值得注意若为UPLOAD_IN_PROGRESS说明上传仍在进行此时需要通过fetchStatus轮询获取最终结果成功完成时crxVersion才会出现该值取自上传包 manifest 中的扩展版本号。4.2 查询条目状态fetchStatusfetchStatus返回Schema$FetchItemStatusResponse字段覆盖了发布生命周期的各个关键状态itemId/name/publicKey条目标识信息lastAsyncUploadState最近一次异步上传的状态仅当过去 24 小时内有过异步上传时设置publishedItemRevisionStatus当前已发布修订版的状态未发布时为空submittedItemRevisionStatus已提交待发布修订版的状态takenDown是否因违反政策被下架可到开发者后台查看详情warned是否已收到政策警告若不处理将被下架。其中Schema$ItemRevisionStatus携带state与distributionChannels发布渠道数组Schema$DistributionChannel给出每个渠道的crxVersion与deployPercentage可用于核对各发布渠道的当前部署进度。4.3 发布与灰度publish / setPublishedDeployPercentagev2 的publish请求体Schema$PublishItemRequestsrc/apis/chromewebstore/v2.ts比 v1.1 更精细字段默认值说明blockOnWarningsfalse设为 true 时若校验存在任何警告则请求失败详情写入error.details否则警告视为非阻塞仅在响应中返回供检查deployInfos开发者后台保存的当前值部署信息数组包含每个渠道的初始百分比灰度Schema$DeployInfo.deployPercentage0100 的非负整数publishTypeDEFAULT_PUBLISH控制通过审核后是立即发布还是暂存到未来某个时间发布STAGED_PUBLISHskipReviewfalse是否尝试跳过条目审核API 会校验条目是否符合免审条件不符合则返回校验错误const res await chromewebstore.publishers.items.publish({ name: publishers/my-publisher/items/my-item, requestBody: { blockOnWarnings: false, deployInfos: [{deployPercentage: 20}], // 先灰度 20% publishType: DEFAULT_PUBLISH, skipReview: false, }, });setPublishedDeployPercentage则用于在不重新提交审核的前提下提高已发布修订版的部署比例——其请求体deployPercentage必须是大于现有目标值的 0100 非负整数。注意源码注释明确说明该能力仅对七天内活跃用户超过 10,000的条目开放小体量扩展无法使用此接口。五、把 CHANGELOG 与源码对应起来v1.1 与 v2 的方法面对比将 CHANGELOG 与源码交叉比对可以还原出两条清晰的演进线索API 能力升级v1.1 只有items资源四件套而 v2 引入了media独立上传资源与publishers.items的状态查询/取消提交/灰度调整能力。CHANGELOG 中多次update the API2.0.1、2.0.2、6.1.0、7.0.0正是 v2 方法面逐步补全的过程其中 7.0.0 标记 BREAKING意味着 v2 的请求/响应结构在最近一次同步中发生了变化升级时需回归测试。工程约束变化4.1.0 → 6.0.0 之间围绕 Node 22 的依赖升级与回退、再统一最终落地为当前package.json的engines.node 22。对于仍在维护旧代码的开发者建议新项目直接使用 v2google.chromewebstore(v2)获得更完整的发布生命周期管理能力迁移时注意资源命名从itemId参数切换为publishers/{publisherId}/items/{itemId}的name参数升级到 7.0.0 前先确认运行环境满足 Node 22 要求并针对fetchStatus/publish的响应字段差异补充类型检查。六、延伸阅读路径版本历史全文src/apis/chromewebstore/CHANGELOG.md子包入口与版本注册src/apis/chromewebstore/index.tsv1.1 实现src/apis/chromewebstore/v1.1.tsv2 实现src/apis/chromewebstore/v2.ts包元数据版本、Node 版本要求、依赖src/apis/chromewebstore/package.json服务端 API 定义revision 20251015discovery/chromewebstore-v1.1.json服务端 API 定义revision 20260924discovery/chromewebstore-v2.json赞分享后端【免费下载链接】google-api-nodejs-clientGoogles officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.项目地址https://gitcode.com/gh_mirrors/go/google-api-nodejs-client点击查看免费下载相关推荐从 1.0.0 到 22.1.0google-api-nodejs-client 中 Notebooks API 客户端的版本演进全解析从 1.0.0 到 22.1.0google api nodejs client 中 Notebooks API 客户端的版本演进全解析 本文以 src/ap后端在线拍卖系统低层设计LLD实战Java 单例服务、并发竞价与观察者通知机制解析在线拍卖系统低层设计LLD实战Java 单例服务、并发竞价与观察者通知机制解析 在线拍卖系统是低层设计Low Level Design, LLD面试与后端google-api-nodejs-client 之 datalineage 客户端库版本演进解析从 1.0.0 到 9.0.1 的 CHANGELOG 全解读google api nodejs client 之 datalineage 客户端库版本演进解析从 1.0.0 到 9.0.1 的 CHANGELOG 全解后端上一篇Clawd on Desk 工程指南面向 AI Agent 的桌宠运行时架构与集成操作手册下一篇BilibiliDown视频下载工具完整指南轻松获取B站高清视频资源创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考