chore: rm rollup-plugin-ts#17895
Conversation
## Walkthrough
本次变更主要涉及构建配置的优化与依赖调整,包括将 rollup 构建脚本与配置文件统一为 `.ts` 后缀,移除和替换部分 rollup 相关依赖,增加类型声明文件的生成流程,并扩展了 Harmony hybrid 平台的组件定义。同时,统一并收紧了多个包中 Node.js 版本的支持范围,升级了 GitHub Actions 工作流中 Node.js、pnpm 和缓存等工具的版本。
## Changes
| 文件/文件组 | 变更摘要 |
|-----------------------------------------------------------------------------|------------------------------------------------------------------|
| packages/taro-platform-harmony-cpp/package.json<br>packages/taro-runtime/package.json | 调整 rollup 相关依赖位置,升级/移除部分依赖,统一依赖管理 |
| packages/taro-platform-harmony-cpp/rollup.config.ts | 替换 TypeScript 插件,简化路径配置,新增类型声明文件生成配置 |
| packages/taro-platform-harmony-cpp/tsconfig.json | 编译包含文件由 `.mts` 改为 `.ts` |
| packages/taro-platform-harmony-hybrid/build/config/harmony-definition.json | 新增 list 及 list-item 组件定义,扩展组件属性 |
| .github/dependabot.yml | 修正 YAML 格式,扩展 `@types/node` 忽略版本范围 |
| .github/workflows/*.yml | 升级 GitHub Actions 中 Node.js、pnpm、cache 等版本,调整环境变量名 |
| examples/**/package.json | 升级 `@types/node` 版本至 `^20` |
| package.json | 升级 `@types/node` 版本至 `^20`,收紧 Node.js 版本支持至 `^20 || ^22` |
| packages/taro-cli/templates/**/package.json.tmpl | 升级 `@types/node` 版本至 `^20` |
| packages/taro-platform-harmony-hybrid/package.json | 移除 `@types/node` 依赖 |
| packages/taro-plugin-generator/package.json | 移除 `@types/node` 依赖 |
| 多个 packages/*/package.json | 统一收紧 Node.js 版本支持范围为 `^20 || ^22`,移除或升级相关依赖 |
## Sequence Diagram(s)
```mermaid
sequenceDiagram
participant 开发者 as Developer
participant Rollup
participant TypeScriptPlugin
participant DTSPlugin
开发者->>Rollup: 启动构建
Rollup->>TypeScriptPlugin: 编译 TS 源码为 JS
Rollup->>DTSPlugin: 生成类型声明文件 (.d.ts)
Rollup-->>开发者: 输出 JS 与 .d.ts 文件Possibly related PRs
Suggested reviewers
Poem
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #17895 +/- ##
========================================
Coverage 55.90% 55.90%
========================================
Files 417 417
Lines 21693 21693
Branches 5376 5359 -17
========================================
Hits 12127 12127
- Misses 7935 8062 +127
+ Partials 1631 1504 -127
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
|
@yoyo837 这个合了即可支持node22 |
|
CI 搞个22? |
|
18这个CI看着还在 |
|
我在main上用22能跑呢🤔 |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
.github/workflows/nodejs.yml (2)
65-67: pnpm/action-setup 升级至 v4 时的参数向后兼容性
pnpm/action-setup@v4目前仍支持version参数,但后续版本可能改为pnpm-version。可考虑按官方 README 更新字段,避免未来破坏。
163-172: 缓存 key 固定字符串,命中率或失效可再评估
key: wasm32-wasi-cargo-ubuntu-latest缺少 Rust toolchain 版本、依赖哈希等信息,可能导致更新后缓存未失效或反复回源。可拼接{{ runner.os }}-{{ hashFiles('**/Cargo.lock') }}提高准确度。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (16)
.github/dependabot.yml(1 hunks).github/workflows/auto-review.yml(1 hunks).github/workflows/build-rust-binding.yml(3 hunks).github/workflows/build-rust-wasm.yml(1 hunks).github/workflows/nodejs.yml(3 hunks).github/workflows/publish.yml(2 hunks).github/workflows/sync-components-types.yml(1 hunks)examples/blended-taro-component-vue3/taro-project/package.json(1 hunks)examples/mini-program-example/package.json(1 hunks)examples/swiper-effect/package.json(1 hunks)examples/taro-list/package.json(1 hunks)package.json(2 hunks)packages/taro-cli/templates/default/package.json.tmpl(1 hunks)packages/taro-cli/templates/plugin-compile/package.json.tmpl(1 hunks)packages/taro-platform-harmony-hybrid/package.json(0 hunks)packages/taro-plugin-generator/package.json(0 hunks)
💤 Files with no reviewable changes (2)
- packages/taro-plugin-generator/package.json
- packages/taro-platform-harmony-hybrid/package.json
✅ Files skipped from review due to trivial changes (10)
- packages/taro-cli/templates/default/package.json.tmpl
- examples/taro-list/package.json
- examples/swiper-effect/package.json
- examples/blended-taro-component-vue3/taro-project/package.json
- examples/mini-program-example/package.json
- packages/taro-cli/templates/plugin-compile/package.json.tmpl
- .github/workflows/build-rust-wasm.yml
- .github/workflows/sync-components-types.yml
- .github/workflows/build-rust-binding.yml
- .github/dependabot.yml
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Build Rust Binding / stable - x86_64-apple-darwin
- GitHub Check: Build Rust Binding / stable - x86_64-pc-windows-msvc
- GitHub Check: Build Rust Binding / stable - aarch64-apple-darwin
🔇 Additional comments (3)
package.json (1)
98-98: 升级 @types/node 到 ^20 后请确认与 Node 22 兼容性PR 目标是支持 Node 22,但类型依赖仍停留在
@types/node@20。如果代码中使用了 22 版新增 API,对应类型可能缺失,编译期无法发现错误。
请检查:
- 是否实际用到 Node 22 特有 API。
- 若有,需要升级到
@types/node@next或等待官方发布 22 对应类型,再行更新。.github/workflows/nodejs.yml (1)
39-59: 矩阵排除规则可能造成平台覆盖不足且 Node 22 可用性需确认
- 目前仅在
ubuntu-latest上执行 Node 20/22 测试;macos-13和windows-latest全被exclude排掉,导致跨平台兼容性测试缺失,确认是否符合预期。- Node 22 仍处于早期阶段,
actions/setup-node@v4是否已提供对应发行版需验证,否则 workflow 会直接失败。建议在合并前手动或通过 CI 运行一次以确认 runner 镜像可拉取 Node 22,并评估是否需要恢复部分 macOS/Windows 组合。
.github/workflows/publish.yml (1)
102-109: 升级 Node 20 与 pnpm/action-setup@v4 👍构建产线与主测试流程保持一致,有助于避免版本漂移问题。当前改动无需额外调整。
能编译 taro-platform-harmony-cpp ? |
是 |
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (3)
packages/taro-rn-supporter/package.json (1)
28-30:engines.node语义化版本范围写法存疑,建议改为显式区间
"^20 || ^22"会导致 21.x 被拒,而 19.x 亦被拒;如果这是故意屏蔽非 LTS 版本可以接受,但 caret-+OR 的写法对部分老版本 npm/yarn 解析器兼容性一般,且可读性较差。考虑改为直接的显式区间:- "node": "^20 || ^22" + "node": ">=20 <23"这样同样排除了 21.x,并避免解析歧义;同时也便于未来调整到 24.x 时只需改上界。请确认团队预期,再决定是否调整。
packages/taro-with-weapp/package.json (1)
32-34: 确认engines.node版本范围写法在各包管理器中的兼容性
"^20 || ^22"在 npm (v8+) 与 pnpm (v8+) 可正常解析,但在 Yarn Classic (v1.x) 早期版本曾出现解析"^x || ^y"异常的案例。若团队或社区仍有 Yarn v1 用户,建议改写为更显式的语义区间" >=20 <21 || >=22 <23 "以避免潜在安装失败。请确认:
- CI 及本地常用的包管理器均能正确安装。
- monorepo 中其它包的
engines.node字段保持完全一致,防止 workspace 之间产生不同的版本约束。为方便一次性校验整个仓库,可执行下列脚本:
#!/bin/bash # 查找所有 package.json 中的 node engines 字段 fd package.json | xargs jq -r 'if .engines? and .engines.node? then input_filename + ": " + .engines.node else empty end' | sort | uniq -c期望输出只出现一条记录且内容为
^20 || ^22(或您调整后的新写法)。如出现多条不同值,请逐一对齐。packages/taro-loader/package.json (1)
28-30: Semver 表达式可读性小建议如果仅想排除 21 而允许 20 及 22 以上,可考虑写成:
- "node": "^20 || ^22" + "node": ">=20 <23"含义等价但更直观,后续若要支持 23 只需上调上界。
非必需,仅供参考。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (65)
npm/darwin-arm64/package.json(1 hunks)npm/darwin-x64/package.json(1 hunks)npm/linux-x64-gnu/package.json(1 hunks)npm/linux-x64-musl/package.json(1 hunks)npm/win32-x64-msvc/package.json(1 hunks)package.json(1 hunks)packages/babel-plugin-transform-react-jsx-to-rn-stylesheet/package.json(1 hunks)packages/babel-plugin-transform-taroapi/package.json(1 hunks)packages/babel-preset-taro/package.json(1 hunks)packages/create-app/package.json(1 hunks)packages/css-to-react-native/package.json(1 hunks)packages/eslint-config-taro/package.json(1 hunks)packages/eslint-plugin-taro/package.json(1 hunks)packages/jest-helper/package.json(1 hunks)packages/postcss-html-transform/package.json(1 hunks)packages/postcss-plugin-constparse/package.json(1 hunks)packages/postcss-pxtransform/package.json(1 hunks)packages/rollup-plugin-copy/package.json(1 hunks)packages/shared/package.json(1 hunks)packages/stylelint-config-taro-rn/package.json(1 hunks)packages/stylelint-taro-rn/package.json(1 hunks)packages/stylelint-taro/package.json(1 hunks)packages/taro-api/package.json(1 hunks)packages/taro-cli-convertor/package.json(1 hunks)packages/taro-cli/package.json(1 hunks)packages/taro-components-library-react/package.json(1 hunks)packages/taro-components-library-vue3/package.json(1 hunks)packages/taro-components-rn/package.json(1 hunks)packages/taro-components/package.json(1 hunks)packages/taro-extend/package.json(1 hunks)packages/taro-framework-react/package.json(1 hunks)packages/taro-framework-vue3/package.json(1 hunks)packages/taro-helper/package.json(1 hunks)packages/taro-loader/package.json(1 hunks)packages/taro-platform-alipay/package.json(1 hunks)packages/taro-platform-ascf/package.json(1 hunks)packages/taro-platform-jd/package.json(1 hunks)packages/taro-platform-qq/package.json(1 hunks)packages/taro-platform-swan/package.json(1 hunks)packages/taro-platform-tt/package.json(1 hunks)packages/taro-platform-weapp/package.json(1 hunks)packages/taro-plugin-html/package.json(1 hunks)packages/taro-plugin-http/package.json(1 hunks)packages/taro-plugin-inject/package.json(1 hunks)packages/taro-plugin-mini-ci/package.json(1 hunks)packages/taro-plugin-react-devtools/package.json(1 hunks)packages/taro-plugin-vue-devtools/package.json(1 hunks)packages/taro-react/package.json(1 hunks)packages/taro-rn-runner/package.json(1 hunks)packages/taro-rn-style-transformer/package.json(1 hunks)packages/taro-rn-supporter/package.json(1 hunks)packages/taro-rn-transformer/package.json(1 hunks)packages/taro-rn/package.json(1 hunks)packages/taro-router-rn/package.json(1 hunks)packages/taro-router/package.json(1 hunks)packages/taro-runner-utils/package.json(1 hunks)packages/taro-runtime-rn/package.json(1 hunks)packages/taro-runtime/package.json(1 hunks)packages/taro-service/package.json(1 hunks)packages/taro-transformer-wx/package.json(1 hunks)packages/taro-webpack5-prebundle/package.json(1 hunks)packages/taro-webpack5-runner/package.json(1 hunks)packages/taro-with-weapp/package.json(1 hunks)packages/taro/package.json(1 hunks)packages/taroize/package.json(1 hunks)
✅ Files skipped from review due to trivial changes (50)
- packages/babel-plugin-transform-react-jsx-to-rn-stylesheet/package.json
- packages/eslint-plugin-taro/package.json
- packages/postcss-plugin-constparse/package.json
- packages/taro-plugin-mini-ci/package.json
- packages/taro-helper/package.json
- packages/taro-platform-ascf/package.json
- packages/taro-components/package.json
- packages/taro-api/package.json
- npm/linux-x64-musl/package.json
- packages/rollup-plugin-copy/package.json
- packages/stylelint-taro/package.json
- packages/shared/package.json
- packages/taro-components-library-vue3/package.json
- packages/taro-platform-swan/package.json
- packages/taro-router-rn/package.json
- packages/taro-platform-tt/package.json
- packages/taro-router/package.json
- packages/taro-runner-utils/package.json
- packages/taro-service/package.json
- packages/taro-plugin-http/package.json
- packages/taro-rn-style-transformer/package.json
- packages/taro/package.json
- packages/create-app/package.json
- packages/taro-runtime-rn/package.json
- packages/taro-components-rn/package.json
- packages/taro-plugin-inject/package.json
- packages/taro-plugin-html/package.json
- packages/taro-react/package.json
- packages/jest-helper/package.json
- packages/postcss-html-transform/package.json
- packages/babel-preset-taro/package.json
- packages/taro-webpack5-runner/package.json
- packages/taro-components-library-react/package.json
- packages/taro-transformer-wx/package.json
- packages/taroize/package.json
- packages/babel-plugin-transform-taroapi/package.json
- packages/taro-rn-transformer/package.json
- packages/taro-platform-weapp/package.json
- packages/taro-cli/package.json
- packages/taro-platform-qq/package.json
- package.json
- npm/win32-x64-msvc/package.json
- packages/postcss-pxtransform/package.json
- packages/taro-plugin-vue-devtools/package.json
- packages/taro-platform-jd/package.json
- packages/taro-cli-convertor/package.json
- packages/taro-extend/package.json
- packages/taro-rn-runner/package.json
- npm/darwin-arm64/package.json
- packages/taro-webpack5-prebundle/package.json
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/taro-runtime/package.json
🧰 Additional context used
🧠 Learnings (13)
📓 Common learnings
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-platform-alipay/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/stylelint-config-taro-rn/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/stylelint-taro-rn/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/eslint-config-taro/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-framework-vue3/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-with-weapp/package.json (2)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
Learnt from: ianzone
PR: NervJS/taro#17842
File: packages/jest-helper/tsconfig.json:9-9
Timestamp: 2025-06-23T00:09:31.186Z
Learning: 在 jest-helper 包中,src 目录下没有 __tests__ 测试目录,只包含 resolver.ts、sequencer.ts 和 snapshot 目录。不要假设包中存在测试目录结构。
packages/taro-rn-supporter/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/css-to-react-native/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-rn/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-loader/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-plugin-react-devtools/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
packages/taro-framework-react/package.json (1)
Learnt from: ianzone
PR: NervJS/taro#17746
File: packages/taro-runtime/tsdown.config.ts:10-16
Timestamp: 2025-05-25T18:02:31.387Z
Learning: 在 taro-runtime 包的 tsdown 配置中,必须禁用 treeshake 来保留 dom-external/index.js 文件。
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: Build Rust Binding / stable - aarch64-apple-darwin
- GitHub Check: Build Rust Binding / stable - x86_64-apple-darwin
- GitHub Check: Build Rust Binding / stable - x86_64-pc-windows-msvc
🔇 Additional comments (12)
packages/taro-plugin-react-devtools/package.json (1)
29-31: 确认是否有意放弃 Node 18 支持
"node": "^20 || ^22"把此前包含 Node 18 的范围收窄到了 20 与 22。Node 18 目前仍是 LTS,且 CI 里仍在跑 18(见 PR 讨论)。请确认:
- 其他包的
engines.node字段是否保持一致,避免版本声明混乱。- 文档与 CI 流程是否同步更新,否则安装阶段
npm/yarn/pnpm可能因 engines 不匹配而报错。如属无意遗漏,可改回
>=18或补充说明。packages/eslint-config-taro/package.json (1)
25-27: 谨慎收紧 Node 版本范围,确认不会破坏旧版用户
将engines.node从原先的>=18改为^20 || ^22意味着显式放弃对 Node 18 的支持。请确认:
- 项目文档、README 与官网已同步更新,明确告知最低支持版本。
- CI 流水线已移除 Node 18、加入 Node 22,并确保 lint、构建、发布流程全部在 20/22 下通过。
- 生态中的其他包(CLI、模板仓库等)若仍声明
>=18,需保持一致,以免安装时出现 peer/engine 冲突。如果只是构建阶段需要 20/22,而运行时仍兼容 Node 18,可考虑保留
>=18并在 CI 里仅使用高版本编译,以减少用户升级成本。packages/stylelint-taro-rn/package.json (1)
41-43: 谨慎移除 Node 18 支持
"node": "^20 || ^22"明确排除了 Node 18(仍处于 Active LTS)与 19/21。
请确认:
- CI 矩阵、发布脚本及 README 中的最低 Node 版本说明已同步更新。
- 依赖此包的下游项目若在 monorepo 内仍标注
>=18,需一并调整,避免安装时出现npm ERR! engines。- 若仅因 rollup-plugin-ts 与 Node 22 冲突而调整,可考虑保留
>=18,并在构建链路里做条件判断,以减少破坏性变更。如以上已核实,请忽略此提醒。
packages/taro-framework-react/package.json (1)
32-34: 确认engines.node取值在所有包管理器中的兼容性
"node": "^20 || ^22"在 npm / pnpm 下能被正确解析,但 Yarn 1(classic)会对含||的表达式给出 warning,CI 如仍包含 Yarn 1 可能导致流水线噪声。若团队仍需兼容 Yarn 1,可考虑改写为区间写法:- "node": "^20 || ^22" + "node": ">=20 <23"请结合实际使用的包管理器与 CI 环境确认是否需要调整。
packages/stylelint-config-taro-rn/package.json (1)
25-27: 警惕:engines.node的收紧可能是破坏性变更将范围从“>=18”改为“^20 || ^22”意味着正式放弃对 Node 18(仍处于 LTS 维护期)以及 19、21 的支持。
若社区中仍大量使用 Node 18,则安装阶段可能直接失败 (npm install/pnpm install会报错)。
同时,本包仍停留在 4.x β 版本而非 semver 主版本跃迁,容易让使用者在无感知的情况下遭遇破坏性升级。建议:
- 确认此范围收紧是否完全必要,仅因
rollup-plugin-ts被移除并不足以限制到 20+。- 若必须移除 Node 18 支持,请在下一个 正式版本(或至少 beta.5)里提升 major 并在变更日志中明确标注。
- 在 CI Matrix 中补充 Node 22 的测试同时保留(或显式放弃)18,以防发布后第一时间暴露兼容性问题。
packages/taro-platform-alipay/package.json (1)
29-31: 移除 Node 18 支持属于破坏性变更,请确认生态链已完全迁移
"node": "^20 || ^22"这一改动直接淘汰了当前仍处于 LTS 的 Node 18(至 2025-10)。
① 若社区/CI 仍大量依赖 18,升级将导致安装失败;请确认所有下游包及 CLI 均已同步限制,否则会出现版本漂移。
② 建议在 CHANGELOG 与文档中显式声明「最低版本提升至 20」并给出迁移指引。
③ 如仅因 rollup-plugin-ts 兼容问题,可考虑"node": ">=20",避免日后再次手动加入 24 等版本。
④ 若确实要锁定 20/22,请确认pnpm、prebuild等脚本未对 21 触发误报,并在 CI matrix 移除 18、增加 22。packages/css-to-react-native/package.json (1)
53-55: 确认 Node 版本限制并同步 CI / 文档
"node": "^20 || ^22"精确限定了仅 LTS 主版本 20 和 22(排除了 18、19、21、23+),语法正确,能满足“不支持 21”这一诉求。
请再核对两点:
- CI 工作流及
volta,.nvmrc等文件是否也已同步调整,否则 CI 仍会用 18 触发红灯。- README / 发行说明中如有 Node 版本声明,也需一并更新,避免用户踩坑。
packages/taro-rn/package.json (1)
37-39: 确认移除 Node 18 支持的兼容性与 CI 配置将
engines.node从>=18收紧到^20 || ^22意味着:
- 仍在使用 LTS 状态(截至 2025-04 结束)的 Node 18 用户将无法安装该包。
- CI、文档、示例脚本以及任何 pre-build 二进制(若存在)都必须同步完成 Node 20/22 的 ABI 及测试覆盖。
请确认:
- monorepo 中所有包的 engine 字段、CI matrix、发布流程与预编译二进制已全部同步到 Node 22;
- README / 官方文档处已声明最低运行时要求变更;
- 若计划在 4.x 次版本中放弃 Node 18,应在 release note 中以 breaking change 明示,否则建议在大版本升级时再移除。
npm/linux-x64-gnu/package.json (1)
16-18: 原生绑定包需确保提供 Node 22 对应的预编译二进制
@tarojs/binding-linux-x64-gnu的engines.node更新为^20 || ^22后,npm 将在 Node 18 环境拒绝安装;同时,Node 22 使用新的 Node-API 版本,若未上传匹配 ABI 的.node文件,安装时将回退至源码编译甚至直接失败。请核对:
- CI / 发布脚本是否已生成并发布 Node 22 ABI 对应的
taro.linux-x64-gnu.node;- README 中是否提示 Node 22 目前处于试用阶段或已完全支持。
npm/darwin-x64/package.json (1)
16-18: macOS x64 绑定同样需要覆盖 Node 22 ABI与 Linux 版本同理,
taro.darwin-x64.node需提供 Node 22 ABI 对应的二进制。否则用户在 Node 22 下安装会触发二进制缺失或 gyp 重编译流程,显著影响安装体验。建议在发布前通过
npm pack+npm install方式在 Node 20、22 环境各自验证二进制加载是否正常。packages/taro-framework-vue3/package.json (1)
29-31: 为了更全面地验证所有子包中是否仍声明支持 Node 18,请使用下列脚本检查每个 package.json 的 engines.node 字段:#!/bin/bash # 在所有子目录中查找 package.json,并检查 engines.node 是否包含 18 find . -type f -name package.json | while read file; do engine=$(jq -r '.engines.node // empty' "$file") if echo "$engine" | grep -E '(^\^?18|>= *18)' >/dev/null; then echo "$file: engines.node = $engine" fi donepackages/taro-loader/package.json (1)
28-30: 为了确认 CI Workflow 中也已移除对 Node 18 的测试,请运行以下脚本检查.github/workflows下的node-version配置:#!/bin/bash set -euo pipefail echo "🚀 查找所有 CI workflow 中的 node-version 配置:" grep -R "node-version" -n .github/workflows echo echo "🔍 过滤包含 18 的行,检查是否仍有 18.x 测试:" grep -R "node-version" -n .github/workflows | grep -E "18(\.x)?"
|
@yoyo837 可以合了? |
|
@ianzone 这个PR我先revert?大部分业务都使用的node18,影响太大了,已经很多人找过来反馈了 |
This reverts commit e123a5a.
可以直接改 node 版本的,而不是整个 revert |





这个 PR 做了什么? (简要描述所做更改)
删除 rollup-plugin-ts 以支持 node22
这个 PR 是什么类型? (至少选择一个)
这个 PR 涉及以下平台:
Summary by CodeRabbit
新功能
重构
杂项