Skip to content

⬆️ 升级依赖并修复 pnpm audit 安全警告#1576

Open
cyfung1031 wants to merge 4 commits into
scriptscat:mainfrom
cyfung1031:pr/update-npm-dep-20260712
Open

⬆️ 升级依赖并修复 pnpm audit 安全警告#1576
cyfung1031 wants to merge 4 commits into
scriptscat:mainfrom
cyfung1031:pr/update-npm-dep-20260712

Conversation

@cyfung1031

@cyfung1031 cyfung1031 commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Checklist / 检查清单

  • Fixes mentioned issues / 修复已提及的问题
  • Code reviewed by human / 代码通过人工检查
  • Changes tested / 已完成测试

Description / 描述

背景

pnpm audit 报告多个直接依赖和传递依赖安全警告。部分问题已有补丁版本,部分修复尚未由上游依赖正式发布,因此本 PR 在避免大版本工具链迁移的前提下,精确更新或覆盖受影响依赖。

变更内容

  • 升级 dompurifyfast-xml-parseruuidpostcssvitest@vitest/coverage-v8
  • pnpm-workspace.yaml 中使用带父依赖版本的精确 overrides,更新受影响的构建、开发服务器、测试及配置解析依赖。
  • webpack-dev-server@5.2.5 使用的 sockjs 固定到上游提交 c239289d8cd85647aff064337d81073f0e4e080a。该提交改用 crypto.randomUUID(),避免继续引入受影响的 uuid@8
  • 保留 minimumReleaseAge: 10080 和现有的 happy-dom patch。

风险控制

  • 所有传递依赖覆盖均绑定到当前父依赖的精确版本,后续父依赖升级后不会继续静默套用旧规则。
  • 不进行 Rspack、Vite 等工具链的大版本迁移,仅采用满足安全修复需求的最小版本更新。
  • SockJS 使用固定 commit SHA,而非可移动的分支引用,确保依赖安装结果可复现。
  • 本 PR 仅涉及依赖及 pnpm 配置,不修改业务逻辑和界面。

验证建议

pnpm install
pnpm audit
pnpm test:ci
pnpm lint
pnpm build

同时可通过以下命令确认关键传递依赖已按预期解析:

pnpm why uuid
pnpm why sockjs
pnpm why vite
pnpm why esbuild
pnpm why qs
pnpm why ws

Screenshots / 截图

无界面变更。

@cyfung1031 cyfung1031 changed the title 更新依赖版本 (20260712) ⬆️ 升级依赖并修复 pnpm audit 安全告警 Jul 12, 2026
@cyfung1031 cyfung1031 changed the title ⬆️ 升级依赖并修复 pnpm audit 安全告警 ⬆️ 升级依赖并修复 pnpm audit 安全警告 Jul 12, 2026
@cyfung1031 cyfung1031 marked this pull request as ready for review July 12, 2026 10:51
CodFrm added 2 commits July 13, 2026 16:50
- sockjs 由 `github:` 简写改为 codeload tarball URL。pnpm 会把简写解析成
  git+ssh (git@github.com:) 地址,在无 SSH key 的 CI runner 上克隆失败导致
  安装步骤挂掉、后续 Lint/测试/E2E 全部连带失败。tarball 走 HTTPS,无需鉴权。
- 移除 `fast-xml-parser@5.7.0>fast-xml-builder` 覆盖:实际解析父版本为 5.9.3,
  该键从不匹配(且目标 1.1.7 比自然解析的 1.2.1 更旧),属失效且反效果的空规则。
@CodFrm

CodFrm commented Jul 13, 2026

Copy link
Copy Markdown
Member

已把 main 合并进来解决冲突,并修复了随之而来的 CI 失败,均已 push 到本分支。

1. 合并 main / 解决冲突

  • 唯一冲突是 pnpm-lock.yaml,用重新生成方式解决(非手工拼 YAML)。package.json 自动合并正确:maintypescript ^6.0.3 / typescript-eslint ^8.62.1 与本 PR 的依赖升级并存。

2. 修复 CI 安装失败(原先 Lint/测试/E2E 全红)

  • 根因:合入 🔧 升级 GitHub Actions 并使用 Corepack 配置 pnpm #1575(改用 Corepack 配置 pnpm)后,sockjsgithub: 简写覆盖被 pnpm 解析成 git+sshgit@github.com:…)地址;CI runner 无 SSH key → Permission denied (publickey)pnpm i --frozen-lockfile 失败 → 后续所有 job 连带失败。原 PR 的 CI 能过,是因为它跑在旧 workflow 上(tarball 拉取)。
  • 修复:把 sockjs 覆盖由 github: 简写改为 codeload tarball URL(https://codeload.github.com/…/tar.gz/<sha>),走 HTTPS、无需鉴权。该 commit 无构建步骤,tarball 可直接使用;解析结果与原 PR 一致(同一 integrity 哈希)。

3. 移除失效的 override

  • fast-xml-parser@5.7.0>fast-xml-builder: 1.1.7 是空规则:实际解析父版本为 5.9.3,该键从不匹配;且目标 1.1.7 比自然解析的 1.2.1 更旧(若生效反而是降级)。移除后 fast-xml-builder 仍为 1.2.1,证明是纯 no-op。

本地验证pnpm i --frozen-lockfiletsc --noEmit(TS 6.0.3)、pnpm lintpnpm test:ci(3130 tests)全绿。
CI 现状:Lint、Run tests、test shard ×2、E2E、codecov 均已通过 ✅。

仍需关注 —— FOSSA License Compliance(1 issue)

这条是本 PR 新引入的(main 为绿)。我核对了本 PR 新增的所有传递依赖,声明的许可证都是宽松型(MIT / BSD-3-Clause / Apache-2.0);其中 @nodable/entities@2.2.0(fast-xml-parser 5.9 拆出的微包)声明 MIT 但未随包附带 LICENSE 文件,是较可能被 FOSSA 命中的点。具体命中项与策略需登录 FOSSA 面板确认后决定接受 / 规避。该检查非 ruleset 必需项,不会物理阻挡合并。

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.

2 participants