- 后端
【免费下载链接】google-api-nodejs-client
Google's 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.
本文以 src/apis/looker/CHANGELOG.md 为主体,结合@googleapis/looker包的源码(index.ts、v1.ts、package.json),完整梳理该模块从 2023 年 11 月首个版本 0.1.0 到 2026 年 10 月 14.2.0 的每一次发布。读者将掌握:Looker API 客户端包的版本节奏与变更类型、Node.js 运行环境要求(Node 18 → Node 22)的演进逻辑、looker: update the API与run the generator两类高频变更的真实含义,以及如何在 Node.js 项目中安装、初始化和调用该包。
一、CHANGELOG 的定位:自动生成的版本事实记录
src/apis/looker/CHANGELOG.md并不是人工维护的说明文档,而是由仓库的版本发布流水线自动生成的发布记录。它的作用主要有三个:
- 版本事实归档:记录每个版本的版本号、发布日期、变更类型(Features / Bug Fixes / BREAKING CHANGES)以及对应的 commit hash 与 PR 编号;
- 升级决策依据:帮助使用者判断升级到新版本时是否涉及破坏性变更(如 Node 版本要求变化);
- API 同步痕迹:每次
**looker:** update the API条目都对应一次 Looker 官方 API discovery 文档的同步。
从仓库根目录的 release-please-config.json 可以推断,该仓库使用 Release Please 机制按 Conventional Commits 约定自动生成版本号与 CHANGELOG 条目。CHANGELOG 中反复出现的run the generator条目,则说明这些变更并非手工修改代码,而是重新运行 API 代码生成器(generator)批量更新所有子包(每个 Google API 对应src/apis/下的一个目录,looker 是其中之一)。
二、完整版本时间线:从 0.1.0 到 14.2.0
CHANGELOG 完整记录了 looker 子包的每一次发布(按时间从新到旧):
| 版本 | 发布日期 | 类型 | 核心内容 |
|---|---|---|---|
| 14.2.0 | 2026-10-07 | Features | looker API 更新(5819955) |
| 14.1.0 | 2026-09-23 | Features | looker API 更新(49eef9a) |
| 14.0.0 | 2026-09-14 | BREAKING+ Features | 全部包恢复要求最低 Node 22(#4020,4e5bae0) |
| 13.0.0 | 2026-09-10 | BREAKING+ Features + Bug Fixes | 最低 Node 22(#4011);looker API 两次更新;运行生成器;修复:恢复 Node 18 支持、升级生成包依赖至 Node 22 |
| 12.0.0 | 2026-09-10 | BREAKING+ Features + Bug Fixes | 最低 Node 22(#4011);恢复 Node 18 支持 |
| 11.0.0 | 2026-09-09 | BREAKING+ Features + Bug Fixes | 最低 Node 22;looker API 三次更新(ce6eba9、38038b2、444caad);运行生成器;修复三项 |
| 10.2.1 | 2026-09-09 | Bug Fixes | 恢复 Node 18 支持(eccac1d) |
| 10.2.0 | 2026-09-02 | Features + Bug Fixes | 运行生成器(#3992);升级生成包依赖至 Node 22 |
| 10.1.0 | 2026-08-18 | Features | looker API 更新(ce6eba9) |
| 10.0.1 | 2026-08-14 | Bug Fixes | looker API 更新(fd3a989) |
| 10.0.0 | 2026-08-03 | BREAKING+ Features | 运行生成器(#3955) |
| 9.0.0 | 2026-05-19 | BREAKING+ Features | looker API 两次更新(38038b2、444caad);运行生成器(#3919) |
| 8.4.0 | 2026-01-30 | Features | looker API 更新(b04810c) |
| 8.3.0 | 2025-12-15 | Features | looker API 更新(0d1fa41) |
| 8.2.0 | 2025-12-05 | Features | looker API 更新(fffb5ef) |
| 8.1.0 | 2025-11-04 | Features + Bug Fixes | looker API 更新(120b12a);修复(a4e3368) |
| 8.0.0 | 2025-10-15 | BREAKING+ Features | 运行生成器(#3811、#3814) |
| 7.0.0 | 2025-09-30 | BREAKING+ Features | 运行生成器(#3795) |
| 6.0.0 | 2025-09-16 | BREAKING+ Bug Fixes | 为全部库发布(#3769);升级 googleapis-common 至 8.0.0(#3731) |
| 5.2.1 | 2025-08-07 | Bug Fixes | 升级 googleapis-common 至 8.0.0(#3731) |
| 5.2.0 | 2025-08-04 | Features | looker API 更新(ba365ce) |
| 5.1.0 | 2025-07-08 | Features + Bug Fixes | looker API 更新(c330623);修复(fb0c3f1) |
| 5.0.0 | 2025-06-30 | BREAKING+ Features + Bug Fixes | 升级至 Node 18;looker API 两次更新;修复 googleapis-common 8.0.2-rc |
| 4.0.1 | 2025-06-04 | Bug Fixes | 升级 googleapis-common 至 8.0.2-rc |
| 4.0.0 | 2025-05-29 | BREAKING+ Features | 升级至 Node 18(682fbb8) |
| 3.1.0 | 2025-05-05 | Features | looker API 更新(bb547f7) |
| 3.0.0 | 2025-03-18 | BREAKING+ Features | looker API 更新(491be14) |
| 2.3.0 | 2025-02-04 | Features | looker API 更新(9ce6a87) |
| 2.2.0 | 2024-10-30 | Features | looker API 更新(6fd286b) |
| 2.1.0 | 2024-08-27 | Features | looker API 更新(96cf760) |
| 2.0.3 | 2024-08-16 | Bug Fixes | looker API 更新(9c58a00) |
| 2.0.2 | 2024-07-26 | Bug Fixes | looker API 更新(9c58a00) |
| 2.0.1 | 2024-05-02 | Bug Fixes | looker API 更新(0c067fa) |
| 2.0.0 | 2024-04-04 | BREAKING+ Features + Bug Fixes | looker API 更新(36a47c8);运行生成器(#3434);两项修复(f9609d8、f918fd8) |
| 1.0.0 | 2024-03-12 | BREAKING+ Features | 运行生成器(#3434) |
| 0.1.1 | 2024-02-02 | Bug Fixes | looker API 更新(f9609d8) |
| 0.1.0 | 2023-11-27 | Bug Fixes | looker API 更新(f918fd8) |
版本节奏观察
从这张时间线可以提炼出三个规律:
- Feature 版本(x.y.0)高频出现:
**looker:** update the API是出现频率最高的条目类型,几乎每月一更。它表示上游 Looker API 的 discovery 文档发生变化后,代码生成器重新生成了v1.ts中的资源类与方法签名; - Major 版本集中出现在 2025-2026 年:8.0.0、9.0.0、10.0.0、11.0.0、12.0.0、13.0.0、14.0.0 在一年内密集发布,其触发因素并非 Looker API 自身,而是整个 monorepo 的基础设施升级(Node 版本要求、googleapis-common 依赖);
- Bug Fixes 三类来源:Node 兼容性回退、依赖升级(googleapis-common 8.0.0 / 8.0.2-rc / 9.0.0)、looker API 本身的小幅修正。
三、破坏性变更分析:Node 版本要求的两轮跃迁
CHANGELOG 中标注⚠ BREAKING CHANGES的版本,其变更理由高度集中在Node.js 运行时版本要求上,这与 package.json 中engines字段的当前状态("node": ">=22.0.0")相互印证:
"engines": { "node": ">=22.0.0" }第一轮:Node 18(2025 年)
- 5.0.0(2025-06-30)与4.0.0(2025-05-29)的 BREAKING CHANGES 均为
upgrade to node 18(commit682fbb8),标志着生成包的最低运行环境从 Node 16 提升到 Node 18; - 同期修复条目显示,伴随这次升级还有 googleapis-common 8.0.2-rc 的依赖调整(
f4b0990)。
第二轮:Node 22(2026 年 9 月)
- 13.0.0 / 12.0.0 / 11.0.0(2026-09-09/10)的 BREAKING CHANGES 均为
Update apiary to minimum Node version of 22(#4011,commitec5a6bf),同时出现run the generator与多条This release has breaking changes说明; - 14.0.0(2026-09-14)又出现
Update apiary to minimum Node version of 22 again - all packages(#4020,commit4e5bae0),"again" 一词表明此前曾短暂回退又再次确认; - 伴随性 Bug Fixes 记录了这次反复的细节:
add back support for node 18(eccac1d)说明团队一度为兼容 Node 18 做了回退,而upgrade dependencies in generated packages to Node 22(de9d20d)又表明最终统一将依赖提升到 Node 22。
实操启示:如果你的部署环境运行在 Node 22 以下(如 Node 18/20),在升级@googleapis/looker到 11.0.0 及以上版本前,需要先确认运行时版本;而 10.2.x 及以下版本对 Node 18 的兼容性更好。这一结论直接来自 CHANGELOG 与 package.json 的engines字段,属于仓库内的可验证事实。
四、looker 子包的源码结构与 API 能力
CHANGELOG 中反复出现的 "update the API" 究竟更新了什么?答案在@googleapis/looker包的源码中。
4.1 包入口:index.ts
index.ts 是包的统一入口,它:
- 注册了唯一的 API 版本
VERSIONS = { v1: looker_v1.Looker }; - 导出一个工厂函数
looker(versionOrOptions),通过googleapis-common的getAPI('looker', ...)实例化客户端; - 导出
auth(AuthPlus)与looker_v1命名空间,方便调用方直接使用类型。
4.2 资源层级:v1.ts
v1.ts 是代码生成器根据 Looker API discovery 文档生成的完整客户端(约 4175 行)。从源码结构看,其资源(Resource)层级为:
Looker └── Resource$Projects └── Resource$Projects$Locations ├── Resource$Projects$Locations$Instances │ ├── create / get / list / patch / delete │ ├── export / restore / restart │ └── Resource$Projects$Locations$Instances$Backups │ └── create / get / list / delete └── Resource$Projects$Locations$Operations └── get / list / delete也就是说,looker 客户端主要围绕Looker 实例的生命周期管理提供操作,典型调用链为looker.projects.locations.instances.create(...)。以实例创建方法为例(v1.ts 中的示例代码),完整用法如下:
const {google} = require('googleapis'); const looker = google.looker('v1'); async function main() { const auth = new google.auth.GoogleAuth({ // Scopes 可以传数组,也可以传单个空格分隔的字符串 scopes: ['https://www.googleapis.com/auth/cloud-platform'], }); const authClient = await auth.getClient(); google.options({auth: authClient}); // 创建 Looker 实例(返回长时运行 Operation) const res = await looker.projects.locations.instances.create({ // Required. 唯一实例标识:仅允许小写字母、数字或连字符, // 首字符必须是字母,末字符必须是字母或数字,最长 63 个字符 instanceId: 'my-looker-instance', // Required. 格式: projects/{project}/locations/{location} parent: 'projects/my-project/locations/my-location', requestBody: { platformEdition: 'LOOKER_CORE_STANDARD', publicIpEnabled: true, oauthConfig: { // 实例的 OAuth 登录设置 }, }, }); console.log(res.data); } main().catch(e => { console.error(e); throw e; });4.3 核心数据类型:Schema$Instance
CHANGELOG 每次 "update the API" 都可能增删Schema接口的字段。当前 v1.ts 中的Schema$Instance定义了实例的完整属性集合,其中值得关注的分组包括:
- 网络与连接:
consumerNetwork、publicIpEnabled、privateIpEnabled、pscEnabled与pscConfig(Private Service Connect)、ingressPublicIp/ingressPrivateIp(输出字段)、egressPublicIp、reservedRange; - 安全与合规:
encryptionConfig(CMEK 客户管理加密密钥)、fipsEnabled(FIPS 140-2)、acceleratedSecurityPatchEnabled(加速安全补丁)、ingressIpAllowlistConfig(入站 IP 白名单)、controlledEgressEnabled; - 版本与发布:
lookerVersion(实例所用 Looker 版本,输出字段)、releaseChannel(发布通道)、platformEdition(平台版本)、geminiEnabled(Gemini 功能开关)、catalogIntegrationOptOut; - 运维与生命周期:
createTime、updateTime、state、softDeleteReason、suspendedTime(均标注为 Output only)、maintenanceWindow/maintenanceSchedule/denyMaintenancePeriod; - 辅助能力:
customDomain(自定义域名)、adminSettings、authType、oauthConfig、periodicExportConfig(周期性导出)、lookerUri(实例 UI 访问地址,输出字段)、userMetadata、linkedLspProjectNumber(Looker Studio Pro 关联项目)。
读者在调用instances.get()或instances.list()时,返回对象即为Schema$Instance;而create、delete、export、restore、restart等耗时操作统一返回Schema$Operation(标准 Google 长时运行任务,含done、error、metadata、name、response字段),需要配合projects.locations.operations.get()轮询完成状态——这是Resource$Projects$Locations$Operations资源存在的意义。
4.4 打包配置:webpack.config.js
webpack.config.js 提供了浏览器/打包场景的构建配置:以index.ts为入口,通过ts-loader编译,产出名为Looker的库文件looker.min.js(dist/目录)。对于 Node.js 端依赖的原生模块(crypto、child_process、fs、http2等)均设为false或空实现,适合在前端项目中打包使用。
五、安装与快速上手
5.1 安装
@googleapis/looker是独立发布的 npm 包,可直接安装:
npm install @googleapis/looker更常见的做法是使用 monorepo 主包googleapis(从 src/apis/looker/v1.ts 的示例注释可以看到npm install googleapis的方式),此时通过google.looker('v1')即可访问:
const {google} = require('googleapis'); const looker = google.looker('v1');5.2 初始化与鉴权
@googleapis/looker支持与googleapis-common提供的全部鉴权方式对接,从 index.ts 的export {auth}以及 v1.ts 中StandardParameters.auth的类型联合可以看出,支持:
OAuth2Client(OAuth 2.0 客户端凭据)JWT(服务账号)Compute(Google Compute Engine 元数据服务器)UserRefreshClient(用户刷新令牌)BaseExternalAccountClient(外部账号/工作负载身份联合)GoogleAuth(默认应用凭据,推荐)
最简单的方式是使用 Application Default Credentials(ADC):
gcloud auth application-default login然后在代码中注入:
const auth = new google.auth.GoogleAuth({ scopes: ['https://www.googleapis.com/auth/cloud-platform'], }); const authClient = await auth.getClient(); google.options({auth: authClient});5.3 典型操作组合
以 "列出实例 → 查看详情 → 备份" 为例(对应 v1.ts 中的list、get与backups.create):
const res = await looker.projects.locations.instances.list({ parent: 'projects/my-project/locations/my-location', }); for (const instance of res.data.instances || []) { console.log(instance.name, instance.lookerUri); }实例级export(导出到 GCS)请求体包含encryptionConfig与gcsUri两个参数(v1.ts),restore(从备份恢复)则属于实例资源的另一方法(v1.ts)。
六、升级注意事项与版本选择建议
综合 CHANGELOG 与源码,为读者给出三条可操作的升级决策建议:
- 关注 Node 版本要求:升级前先检查 package.json 的
engines字段(当前为>=22.0.0)。若部署在 Node 18/20 环境,建议停留在 10.2.x 或更早版本,或同步升级运行时; - 破坏性变更集中在 monorepo 基础设施:多数 major 版本的 BREAKING CHANGES 来自生成器重跑与依赖升级(
googleapis-common),而非 Looker API 语法变化。升级时优先查阅 CHANGELOG 中对应版本的 BREAKING CHANGES 段落; - API 同步版本可直接跟随:仅包含
**looker:** update the API的 minor/patch 版本(如 14.1.0、14.2.0)通常为 API 字段/方法的新增与修正,回归风险较低,可直接升级以获取最新 Looker API 能力。
七、小结
src/apis/looker/CHANGELOG.md用 30 多个版本记录了一个 Google API 客户端子包的完整生命周期:从 2023 年 11 月的 0.1.0 起步,到 2026 年 10 月的 14.2.0;它既是Looker 官方 API 变更的同步日志(looker: update the API),也是Node.js 生态演进的风向标(Node 18 → Node 22 两轮最低版本跃迁),更是monorepo 代码生成与发布机制的工作痕迹(run the generator、Release Please 自动版本号)。
将 CHANGELOG 与 v1.ts 中的资源层级(Projects → Locations → Instances → Backups/Operations)、Schema$Instance字段集合、package.json 的engines与依赖声明对照阅读,就能从"发布记录"还原出完整的客户端能力全景,并在升级与排障时快速定位版本差异。
- 后端
【免费下载链接】google-api-nodejs-client
Google's 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.
相关推荐
google-api-nodejs-client dlp 模块 CHANGELOG 深度解读:版本演进、破坏性变更与生成机制
google api nodejs client dlp 模块 CHANGELOG 深度解读:版本演进、破坏性变更与生成机制 本篇以 src/apis/dlp/
后端从 CHANGELOG 看 google-api-nodejs-client 中 Firebase App Distribution 的版本演进与破坏性变更
从 CHANGELOG 看 google api nodejs client 中 Firebase App Distribution 的版本演进与破坏性变更 本
后端google-api-nodejs-client 中 policytroubleshooter 包的版本演进与破坏性变更全解析
google api nodejs client 中 policytroubleshooter 包的版本演进与破坏性变更全解析 本文以 src/apis/pol
后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考