Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
改动类型
是否包含破坏性变更
对用户无破坏性变更:安装包格式、文件名、
dist/输出目录与 electron-updater 三个更新通道(stable / beta / nightly)保持不变,已安装用户可原地升级。开发侧的命令变化见下方「开发侧变化」改动说明
一、electron-vite 迁移到 Electron Forge
开发、编译、打包、制作安装包全部由 Electron Forge 驱动;安装包仍由 electron-builder 生成(项目内 maker 以 prepackaged 模式调用),因此保留 NSIS 自定义安装、portable 版与 electron-updater
forge.config.ts+vite.{main,preload,renderer}.config.ts取代electron.vite.config.ts;主进程与 preload 保持 ESM 输出到.vite/buildwindow/renderer.ts的loadRendererPage统一加载渲染页面(替代ELECTRON_RENDERER_URL);?asset导入与__dirname改为import.meta.dirnamescripts/forge/hooks.ts:packageAfterCopy复制 better-sqlite3 / font-list(按目标平台裁剪预编译文件)、native/*.node、afp、app-update.yml、LICENSE,并裁剪 Chromium 语言文件,替代原scripts/after-pack.ts与 electron-builder 的 files / extraResourcesscripts/forge/maker.ts:继承@electron-forge/maker-base,调用 electron-builderbuild()生成 nsis / portable / dmg / zip / AppImage / deb / rpm / tar.gz / pacmanpnpm-workspace.yaml显式声明默认的hoistPattern: ["*"]以通过 Forge 的包管理器检查,依赖布局不变@electron-toolkit/preload、@electron-toolkit/utils、@electron-toolkit/tsconfig:window.electron去除,关于页版本号改由window.api.system.versions提供optimizer.watchWindowShortcuts改为window/shortcuts.ts自行实现:继续拦截开发者工具与缩放快捷键、开发环境 F12,但不再拦截 Ctrl/Cmd+R——原拦截会连同页面按键一起屏蔽,导致「切换循环模式」默认快捷键CommandOrControl+R在打包版中失效tsconfig.base.json,内容与原包一致pnpm build:<platform> --arch=<arch>,文档同步更新二、ESLint 10 适配
@electron-toolkit/eslint-config-ts内置@eslint/js9,与项目的 ESLint 10 不匹配,ESLint 10 新增的推荐规则未生效@eslint/js10、typescript-eslint、globals,原包配置内联到eslint.config.mts,规则选项不变preserve-caught-error(补充cause)与no-useless-assignment(去掉会被覆盖的初始值)在现有代码中的 14 处报错,不改变运行行为.mts/.cts开发侧变化
pnpm dev/pnpm start改用electron-forge start;pnpm build/build:unpack输出到out/SPlayer-Next-<platform>-<arch>/pnpm build:win nsis这类只构建部分 target 的写法不再可用(forge make不会把额外参数传给 electron-builder),文档改为--arch用法out/main等变为.vite/关联 Issue
无
测试情况
pnpm format后prettier --check、pnpm typecheck、pnpm lint、pnpm test(node 55 + vitest 557)全部通过pnpm dev:主窗口、桌面歌词、灵动岛均从 dev server 加载,渲染进程 HMR 生效且不整页刷新,SQLite 曲库、FLAC 解码、插件 host、托盘正常pnpm build:mac --arch=arm64:dmg / zip / blockmap /latest-mac.yml文件名与迁移前一致,dmg 体积 −2.6%,app.asar19M → 5.7M;dmg 安装后运行正常app-update.yml、better-sqlite3 平台裁剪、语言文件裁剪、deb 的package-type均符合预期latest*.yml,Windows / Linux 的更新元数据需在 nightly / release 流程中确认(mac 本地已确认latest-mac.yml正常生成)自查清单
pnpm format,并确认pnpm typecheck、pnpm lint通过pnpm build:native验证;未手写native/*/index.d.tsdev分支提交