source-to-app:把 Electron/Node 桌面源码打成可双击运行的产物

前言

在 DSH 里做 Electron 或 Node 桌面项目时,npm run dev 能跑通,并不等于别人拿到仓库就能双击打开。常见卡点包括:国内镜像下载、Windows 260 字符路径限制、构建阶段清缓存被拦、以及打包成功但关键文件其实没进包。手写环境变量、反复试构建,既占时间也难在智能体会话里稳定复现。

下面介绍维护者 lilinshuei 发布的客户端类 DSH 插件 source-to-app。它把「预检 → 打包 → 验货」收成一套本地脚本与 Skill 能力,面向 Electron / Node 桌面项目的交付打包,并在产物侧做文件数、体积与关键文件、代码新鲜度等校验,而不只看命令退出码。

这是什么

source-to-app(npm 包名同名)一句话定位:把源码变成别人能双击打开的程序;自动处理镜像、长路径、缓存,并在打完包后校验产物。

项 说明
维护者 lilinshuei
分类 客户端(SkillHub 目录)
许可证 MIT
运行时依赖 0(适配层零依赖)
仓库 GitHub: lilinshuei/source-to-app
目录页 SkillHub: source-to-app

插件不修复业务代码错误,只处理打包链路上的环境与配置问题;所有处理在本地完成,仓库声明零遥测、不上报使用数据。

核心功能

资料中可核对的能力如下。

  1. 约 10 秒预检(preflight)
    检查 Node 版本、磁盘、路径长度、镜像、包管理器、上次残留等;结果分为通过、警告、阻塞,开打前先暴露问题。

  2. 自动处理环境坑
    针对国内镜像、长路径跳板、缓存清理被拦等场景有对应处理,减少手配环境变量。

  3. 一条命令编排打包
    流程为预检 → 配置 → 构建 → 打包;package.mjs 负责镜像、长路径、缓存与构建编排。

  4. 产物真校验
    校验文件数、总体积、关键文件是否存在,以及 app.asar 内代码是否新鲜;不仅凭「命令没报错」判定成功。

  5. 安全与回退
    需要挪走的目录进暂存区而非直接删除;安全开关限定在构建子进程内。仓库脚本约束为「只新增、不删除」,清理时会说明并留回退路径。

仓库主脚本与文档:

  • scripts/preflight.mjs — 开打前环境体检
  • scripts/package.mjs — 打包编排
  • scripts/verify-artifact.mjs — 产物校验
  • references/pitfalls.md — 按报错症状查原因与处理

安装与启用

包已发布到 npm registry。在 DSH 桌面端「添加插件」时,只填包名 source-to-app,不要粘贴整条命令。桌面端把 profile 中的 web 换成 desktop;装完重启 DSH,新会话即可调用。

npm 一行安装(推荐)

dsh plugin --profile web add source-to-app

从 GitHub 安装

跟最新提交或 npm 拉取不畅时使用:

dsh plugin --profile web add github:lilinshuei/source-to-app

手动安装

将仓库复制到 ~/.dsh/skills/source-to-app/,最终 Skill 路径为 ~/.dsh/skills/source-to-app/SKILL.md(仓库根目录即 Skill 本体)。

注意: 插件随当前 DSH 进程权限在本地执行;安装前请自行审阅源码与 MIT 许可证,并只打包你拥有或已获授权的项目与素材。插件不提供代码签名证书,也不绕过 SmartScreen。

典型用法

以下命令来自仓库 README,将 <项目根>、<产物目录> 等替换为实际路径。

1. 先体检

node scripts/preflight.mjs --project-root <项目根>

约 10 秒内可知当前环境能否开始打包。

2. 再打包

node scripts/package.mjs --project-root <项目根> --desktop-dir apps/desktop --mode dir

--mode dir 适合内部测试;对外交付时再按体积决定是否制作安装程序。超过 2GB 的安装包 README 提示不建议用 NSIS,方案需自行决定。

3. 最后验货

node scripts/verify-artifact.mjs --artifact <产物目录> --expect resources/模型文件.bin

除退出码外,应确认关键文件与代码新鲜度;--expect 按项目替换为真实关键路径。

在 DSH 会话中,也可通过已安装的 Skill 引导智能体按上述顺序调用仓库脚本;具体触发方式以 SKILL.md 与 cordis.patch.yml 挂载声明为准。

适用场景与能力边界

更适合:

  • Windows 优先的 Electron / Node 桌面项目交付
  • 需要把仓库交给非技术人员、希望产出可双击目录或安装包的场景
  • 希望在打包链路统一处理镜像、长路径、缓存,并在产物侧做结构化校验的团队

环境要求(README):

项 要求
运行环境 Node.js ≥ 18
项目类型 Electron / Node 桌面项目
操作系统 Windows 优先;其他平台按脚本文档调整
签名证书 不内置;需要时自行提供

npm 包 package.json 中 engines.node 为 >=20,若预检报版本问题,以本地 Node 版本与预检输出为准升级。

明确不做的事:

  • 不修复项目业务逻辑错误
  • 不提供签名证书、不绕过 SmartScreen
  • 联网仅发生在你自行执行的包管理器或下载命令中,插件本身无内置外联统计

结尾

source-to-app 把桌面项目从「开发机能跑」到「别人能双击用」之间的镜像、路径、缓存与漏打文件问题,收成预检、打包、验货三步;适合在 DSH 工作流里做 Electron/Node 客户端交付时使用。

SkillHub 为社区插件目录站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,是否安装由你自行判断风险与许可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜