Skip to content

chore: rm rollup-plugin-ts#17895

Merged
yoyo837 merged 7 commits intoNervJS:mainfrom
ianzone:node22
Jun 28, 2025
Merged

chore: rm rollup-plugin-ts#17895
yoyo837 merged 7 commits intoNervJS:mainfrom
ianzone:node22

Conversation

@ianzone
Copy link
Copy Markdown
Contributor

@ianzone ianzone commented Jun 26, 2025

这个 PR 做了什么? (简要描述所做更改)
删除 rollup-plugin-ts 以支持 node22

这个 PR 是什么类型? (至少选择一个)

  • 错误修复 (Bugfix) issue: fix #
  • 新功能 (Feature)
  • 代码重构 (Refactor)
  • TypeScript 类型定义修改 (Types)
  • 文档修改 (Docs)
  • 代码风格更新 (Code style update)
  • 构建优化 (Chore)
  • 其他,请描述 (Other, please describe):

这个 PR 涉及以下平台:

  • 所有小程序
  • 微信小程序
  • 支付宝小程序
  • 百度小程序
  • 字节跳动小程序
  • QQ 轻应用
  • 京东小程序
  • 快应用平台(QuickApp)
  • Web 平台(H5)
  • 移动端(React-Native)
  • 鸿蒙(harmony)

Summary by CodeRabbit

  • 新功能

    • Harmony 混合平台新增了 "list" 和 "list-item" 组件定义,扩展了组件支持。
  • 重构

    • 构建配置优化,使用官方 TypeScript 插件替换了已弃用插件,简化了路径配置。
    • 构建流程新增类型声明文件(.d.ts)生成。
  • 杂项

    • 更新和调整了部分依赖项,移除无用依赖,提升构建效率。
    • 多个示例和模板中升级了 @types/node 依赖版本至 ^20。
    • GitHub Actions 工作流升级了 Node.js 版本及相关工具版本,改进 CI/CD 环境。
    • 依赖管理配置和自动更新工具格式优化,增强稳定性和兼容性。
    • 统一并严格限定 Node.js 版本支持为 20 和 22,提升兼容性和稳定性。

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 26, 2025

## 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

  • yoyo837
  • tutuxxx

Poem

🐇
新依赖轻装上阵,
类型声明更分明。
配置文件齐步走,
组件家族添新丁。
代码如春草,
构建如风行,
兔子挥爪笑盈盈!


<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between a3ccaff6f7dd0b4c737f0bb4ffa918e42bbf5f33 and d10025a9c746197ce6dcea4b7b55b2c18c5099f0.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `.github/workflows/nodejs.yml` (2 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* .github/workflows/nodejs.yml

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (3)</summary>

* GitHub Check: Build Rust Binding / stable - aarch64-apple-darwin
* GitHub Check: Build Rust Binding / stable - x86_64-pc-windows-msvc
* GitHub Check: Build Rust Binding / stable - x86_64-apple-darwin

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details open="true">
<summary>✨ Finishing Touches</summary>

<details open="true">
<summary>🧪 Generate Unit Tests</summary>

- [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Create PR with Unit Tests
- [ ] <!-- {"checkboxId": "07f1e7d6-8a8e-4e23-9900-8731c2c87f58", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Post Copyable Unit Tests in Comment

</details>

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=NervJS/taro&utm_content=17895):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai auto-generate unit tests` to generate unit tests for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

@coderabbitai coderabbitai Bot requested a review from tutuxxx June 26, 2025 14:41
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 26, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 55.90%. Comparing base (d93fa03) to head (d10025a).

Additional details and impacted files

Impacted file tree graph

@@           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     
Flag Coverage Δ
taro-cli 72.42% <ø> (ø)
taro-runtime 59.87% <ø> (ø)
taro-web 53.19% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

see 37 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 26, 2025

@yoyo837 这个合了即可支持node22

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 26, 2025

@yoyo837 这个合了即可支持node22

@yoyo837 现在合我现在就推送

@ianzone ianzone requested a review from yoyo837 June 27, 2025 03:21
Comment thread packages/taro-platform-harmony-cpp/tsconfig.json Outdated
@coderabbitai coderabbitai Bot requested a review from yoyo837 June 27, 2025 03:27
@yoyo837
Copy link
Copy Markdown
Contributor

yoyo837 commented Jun 27, 2025

CI 搞个22?

@yoyo837
Copy link
Copy Markdown
Contributor

yoyo837 commented Jun 27, 2025

18这个CI看着还在

@ianzone ianzone changed the title chore: rm rollup-plugin-ts chore: node22 Jun 27, 2025
@yoyo837
Copy link
Copy Markdown
Contributor

yoyo837 commented Jun 27, 2025

我在main上用22能跑呢🤔

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between f031603 and c47aaae.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is 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,对应类型可能缺失,编译期无法发现错误。
请检查:

  1. 是否实际用到 Node 22 特有 API。
  2. 若有,需要升级到 @types/node@next 或等待官方发布 22 对应类型,再行更新。
.github/workflows/nodejs.yml (1)

39-59: 矩阵排除规则可能造成平台覆盖不足且 Node 22 可用性需确认

  • 目前仅在 ubuntu-latest 上执行 Node 20/22 测试;macos-13windows-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 👍

构建产线与主测试流程保持一致,有助于避免版本漂移问题。当前改动无需额外调整。

Comment thread package.json Outdated
Comment thread .github/workflows/auto-review.yml
@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 27, 2025

我在main上用22能跑呢🤔

能编译 taro-platform-harmony-cpp ?

@yoyo837
Copy link
Copy Markdown
Contributor

yoyo837 commented Jun 27, 2025

我在main上用22能跑呢🤔

能编译 taro-platform-harmony-cpp ?

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 27, 2025

我在main上用22能跑呢🤔

能编译 taro-platform-harmony-cpp ?

就算能也别用了
image

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 27, 2025

我在main上用22能跑呢🤔

能编译 taro-platform-harmony-cpp ?

而且类似的问题之前就有提过 https://github.com/NervJS/taro/pull/17848/files#diff-727a1ab3559ae8514f7de6e19f2664c328db28a903329f97aad9ce1df452f1c0

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 " 以避免潜在安装失败。

请确认:

  1. CI 及本地常用的包管理器均能正确安装。
  2. 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

📥 Commits

Reviewing files that changed from the base of the PR and between a9d900e and c1744a6.

📒 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 讨论)。请确认:

  1. 其他包的 engines.node 字段是否保持一致,避免版本声明混乱。
  2. 文档与 CI 流程是否同步更新,否则安装阶段 npm/yarn/pnpm 可能因 engines 不匹配而报错。

如属无意遗漏,可改回 >=18 或补充说明。

packages/eslint-config-taro/package.json (1)

25-27: 谨慎收紧 Node 版本范围,确认不会破坏旧版用户
engines.node 从原先的 >=18 改为 ^20 || ^22 意味着显式放弃对 Node 18 的支持。请确认:

  1. 项目文档、README 与官网已同步更新,明确告知最低支持版本。
  2. CI 流水线已移除 Node 18、加入 Node 22,并确保 lint、构建、发布流程全部在 20/22 下通过。
  3. 生态中的其他包(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。
请确认:

  1. CI 矩阵、发布脚本及 README 中的最低 Node 版本说明已同步更新。
  2. 依赖此包的下游项目若在 monorepo 内仍标注 >=18,需一并调整,避免安装时出现 npm ERR! engines
  3. 若仅因 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 主版本跃迁,容易让使用者在无感知的情况下遭遇破坏性升级。

建议:

  1. 确认此范围收紧是否完全必要,仅因 rollup-plugin-ts 被移除并不足以限制到 20+。
  2. 若必须移除 Node 18 支持,请在下一个 正式版本(或至少 beta.5)里提升 major 并在变更日志中明确标注。
  3. 在 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,请确认 pnpmprebuild 等脚本未对 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”这一诉求。
请再核对两点:

  1. CI 工作流及 volta, .nvmrc 等文件是否也已同步调整,否则 CI 仍会用 18 触发红灯。
  2. README / 发行说明中如有 Node 版本声明,也需一并更新,避免用户踩坑。
packages/taro-rn/package.json (1)

37-39: 确认移除 Node 18 支持的兼容性与 CI 配置

engines.node>=18 收紧到 ^20 || ^22 意味着:

  1. 仍在使用 LTS 状态(截至 2025-04 结束)的 Node 18 用户将无法安装该包。
  2. 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-gnuengines.node 更新为 ^20 || ^22 后,npm 将在 Node 18 环境拒绝安装;同时,Node 22 使用新的 Node-API 版本,若未上传匹配 ABI 的 .node 文件,安装时将回退至源码编译甚至直接失败。

请核对:

  1. CI / 发布脚本是否已生成并发布 Node 22 ABI 对应的 taro.linux-x64-gnu.node
  2. 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
done
packages/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)?"

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 27, 2025

@yoyo837 可以合了?

Comment thread .github/workflows/build-rust-wasm.yml
@coderabbitai coderabbitai Bot requested a review from yoyo837 June 27, 2025 10:26
@yoyo837
Copy link
Copy Markdown
Contributor

yoyo837 commented Jun 27, 2025

image

这个是不是要到main后才会生效

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 27, 2025

image 这个是不是要到main后才会生效

不知道

@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jun 29, 2025

image main的 CI 看着少了

这也不是固定的吧?

image

This was referenced Jul 5, 2025
@Single-Dancer
Copy link
Copy Markdown
Collaborator

@ianzone 这个PR我先revert?大部分业务都使用的node18,影响太大了,已经很多人找过来反馈了

Single-Dancer pushed a commit that referenced this pull request Jul 11, 2025
Single-Dancer added a commit that referenced this pull request Jul 11, 2025
* Revert "chore: change node engine version to >= 20 (#17979)"

This reverts commit da3decb.

* Revert "chore: rm rollup-plugin-ts again (#17895)"

This reverts commit e123a5a.

---------

Co-authored-by: chenjiajun79 <chenjiajun79@jd.com>
@ianzone
Copy link
Copy Markdown
Contributor Author

ianzone commented Jul 11, 2025

@ianzone 这个PR我先revert?大部分业务都使用的node18,影响太大了,已经很多人找过来反馈了

可以直接改 node 版本的,而不是整个 revert

@ianzone ianzone mentioned this pull request Jul 11, 2025
27 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants