Skip to content

fix(plugins): 插件信息查询不再依赖系统 npm - #825

Open
yaojin3616 wants to merge 1 commit into
mainfrom
fix-plugin-query-npm
Open

yaojin3616 wants to merge 1 commit into
mainfrom
fix-plugin-query-npm

Conversation

@yaojin3616

Copy link
Copy Markdown
Contributor

修复插件查询依赖系统 npm

在没有系统 Node/npm 的 Windows 安装环境中,官方插件页面查询 dshmarket 时,内置 pnpm 10.34.5 会将 view 转交给 PATH 中的 npm,导致 spawnSync npm ENOENT,安装尚未开始就失败。

本次修改:

  • 将固定版本 npm 11.21.1 作为应用和市场安装器的生产依赖,复用现有 Electron Node 模式,不增加 Node 运行时或原生 addon。
  • 公共 pnpm runner 对命令在首位的 view/info/show/v 查询直接运行安装目录中的 npm CLI;从实际 pnpm 入口解析,不从 Profile、cwd 或已 staging 的 runner 查找。
  • 转换 pnpm --config.* 参数为 npm 参数,保留 registry、scoped auth、代理、证书、JSON 与错误退出行为;add/install/remove 等仍走 pnpm。
  • npm 资源缺失时明确报错,不回退到用户机器上的 npm。
  • 新增无系统 npm、本地认证 registry、版本范围、404、staged runner 与同名 Profile npm 隔离回归;更新 Windows 引导参数断言,并加入 Windows CI。
  • after-pack Harness gate 增加无系统工具 PATH 的本地 registry 查询,覆盖实际安装资源闭包。

依赖取舍:npm 包约 13 MB 未压缩(打包过滤前);选择复用 npm 配置及认证语义,避免为此重做 registry/代理/证书处理。等捆绑的 pnpm 支持等价的原生元数据查询后可移除此适配。

验证结果(macOS arm64):

  • 相关 5 个测试文件共 44 项通过:packaged-plugin-query、pnpm-runner、profile-registry-query、windows-hide-console、packaged-dependency-closure。其中新增 7 项包括真实无 PATH npm 查询及 staged runner 隔离。
  • npm run typecheck、npm run build、git diff --check 通过。
  • 使用真实 Electron 43.0.0,在仅包含 npm/pnpm/runner 的独立 ASAR 中运行同一 verifyPackageQuery,PATH 中无系统工具,查询通过;这不是完整应用安装包验收。
  • npm ci 已完成依赖安装和全部补丁重放,但 postinstall 的 Electron 下载先被缓存沙箱权限阻止、获准重试后又遇网络失败。复用本机同版本 Electron 43.0.0 后,npm run postinstall 全部通过。
  • npm test 完整重试:2825 passed / 21 failed / 5 skipped,7 个文件失败,主要涉及 Electron loader 预期、真实 Harness 子进程、Open In 环境和 ASAR/native 临时目录。使用未修改 main 源码快照、共享相同依赖安装做了对照,这些测试组复现了同类失败;该对照不是一次独立干净安装。完整回归未报通过,未修改相关断言来绕过失败。
  • 新用例已加入 Windows 专项 CI;尚未在 Windows 原生安装包上执行。

范围限制:本 PR 修复 npm 查询入口缺失,不声称修复另一个 resolveGit/getRepoRefs 安装失败;没有改动用户 Profile 数据和 Git 安装策略。Windows 原生安装包交互验收待 CI/目标机器完成。

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.

1 participant