🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

应用打包流水线 lw0129a/dsh-app-packager

DeepSeek Harness
lw0129a23 天前有提交已提供中文文档扫描:含敏感能力

把 uni-app x 项目一键打成三端安装包

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lw0129a/dsh-app-packager
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 23 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 发起网络请求
    dist/client.js:598
    const response = await fetch(`${ROUTE}/${path}`, {
  • 执行外部命令来自配置/变量
    dist/web.js:367
    const child = spawnProcess(process.execPath, [script, ...args], { cwd, stdio: ['ignore', 'pipe', 'pipe'] });
  • 执行外部命令来自配置/变量
    dist/web.js:580
    const child = spawnProcess(process.execPath, [script], { cwd, stdio: ['ignore', fd, fd], detached: true });
  • 执行外部命令固定命令
    vendor/app-packager/dist/engine.js:55
    const probe = spawnSync('wsl.exe', ['-e', 'wslpath', '-a', winPath], { encoding: 'utf8' });
  • 执行外部命令来自配置/变量
    vendor/app-packager/dist/engine.js:84
    const usable = spawnSync(wsl, ['-e', 'bash', '-lc', 'true'], { encoding: 'utf8' });
  • 执行外部命令来自配置/变量
    vendor/app-packager/dist/engine.js:132
    const child = spawn(prepared.command, prepared.args, {
  • 执行外部命令来自配置/变量
    vendor/app-packager/dist/doctor.js:26
    const out = execFileSync(cli, ['--help'], { encoding: 'utf8', timeout: 20000 });
  • 执行外部命令来自配置/变量
    vendor/app-packager/dist/remote.js:80
    const child = spawn(command, argv, { stdio, env: env || process.env });
  • 执行外部命令来自配置/变量
    vendor/app-packager/dist/engine/run.js:12
    const child = spawnProcess(command, argv, { cwd, env: env || process.env, stdio: ['pipe', 'pipe', 'pipe'] });
  • 执行外部命令来自配置/变量
    dist/upgrade.js:29
    const child = spawn(command, args, { cwd, stdio: 'inherit', shell: false });
  • 请求外部主机registry.npmjs.org
    dist/upgrade.js:36
    const res = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, { signal: AbortSignal.timeout(8000) });
  • 发起网络请求
    dist/upgrade.js:36
    const res = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, { signal: AbortSignal.timeout(8000) });
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:registry.npmjs.org

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 一键打包三端安装包
  • npm可安装CLI

README

由 DeepSeek 最新模型翻译生成
AppPackager(打包工具) 仓库:<https://github.com/lw0129a/dsh-app-packager>(MIT 开源) 把 uni-app x 项目一键打成 iOS IPA / Android APK / HarmonyOS HAP 的本地离线工具链:既能按原来的方式在 macOS 上直接运行,也能作为 npm 包安装、作为 DeepSeek Harness 插件在插件市场安装使用。 - CLI:app-packager —— 一个零运行时依赖的 Node 命令行,把打包引擎(bash)交付到你机器上的 ~/AppPackager。 - 插件:dsh-app-packager —— 在 DeepSeek Harness 里用四个工具完成「看项目 / 查环境 / 检查 / 打包」,无需记命令。 - 开源协议:MIT。 本仓库不内置业务项目,不上传业务源码;项目在运行时从 config/projects/.env 读取,构建复制到隔离工作区,产物归档到 packages/。SDK、签名、产物、工作区与本地配置都不进 Git。
展开完整文档(README 剩余 1 节)
AppPackager(打包工具)

仓库:<https://github.com/lw0129a/dsh-app-packager>(MIT 开源)

把 uni-app x 项目一键打成 iOS IPA / Android APK / HarmonyOS HAP 的本地离线工具链:既能按原来的方式在 macOS 上直接运行,也能作为 npm 包安装、作为 DeepSeek Harness 插件在插件市场安装使用。

- CLI:app-packager —— 一个零运行时依赖的 Node 命令行,把打包引擎(bash)交付到你机器上的 ~/AppPackager。
- 插件:dsh-app-packager —— 在 DeepSeek Harness 里用四个工具完成「看项目 / 查环境 / 检查 / 打包」,无需记命令。
- 开源协议:MIT。

本仓库不内置业务项目,不上传业务源码;项目在运行时从 config/projects/.env 读取,构建复制到隔离工作区,产物归档到 packages/。SDK、签名、产物、工作区与本地配置都不进 Git。

快速开始

方式一:命令行

全局安装(也可以直接用 npx)
npm i -g app-packager
或 pnpm add -g app-packager

app-packager init # 首次:把打包引擎复制到 ~/AppPackager,并进入初始化向导 app-packager doctor # 检查这台机器能打哪些平台 app-packager list # 列出已发现的 uni-app x 项目 app-packager register ~/work/shop # 登记任意目录下的项目 app-packager build android my-project --upload pgyer app-packager build ios --all

不安装也能开箱试用:

npx app-packager doctor
npx app-packager build harmony my-project

引擎目录默认 ~/AppPackager,可用 APP_PACKAGER_HOME 环境变量或 --dir <路径> 指定。初始化向导会把同级目录下的 uni-app x 项目自动登记到 config/projects/;也可以用 --search-roots 追加扫描目录,或用 app-packager register <路径>(面板里的「选择目录…」按钮)登记磁盘上任意位置的项目。

方式二:DeepSeek Harness 插件

在 Harness 的插件市场搜索 AppPackager 安装;也可以直接把包装进某个 profile(dsh plugin 会把参数透传给该 profile 的 pnpm):

dsh plugin --profile desktop add dsh-app-packager

装好后需要重启该 profile 才会挂载下面的工具。上架与发布流程见 docs/zh-CN/publishing.md。

安装后模型可直接调用四个工具:

| 工具 | 作用 |
| app_packager_list | 列出已配置项目、启用平台、源码目录是否有效 |
| app_packager_doctor | 检查 Node / shell 桥接 / Xcode / HBuilderX / JDK / Android SDK / DevEco Studio / 项目配置 |
| app_packager_check | 调用引擎对某平台做打包环境检查(证书、SDK、CLI) |
| app_packager_build | 执行打包(ios / android / harmony / all);不给项目即该平台全部已启用项目,上传可给多个平台(pgyer,huawei),可覆盖版本号 |

首次调用会自动把引擎物化到 <插件目录>/home(首次解析时会把已有的 ~/AppPackager 改名搬进去,SDK 与已登记项目都跟着走);app_packager_doctor 在 Windows 上同样可用。

Web 面板

同一个插件还带浏览器侧代码(./client.js):装了 Web 界面的 profile 会在侧栏面板列表里多一个 应用打包 入口,页面开在中栏:

- 引擎 —— 引擎目录、版本、是否已物化、探测到的 bash 桥接,缺引擎时一键初始化。
- 环境检查 —— 与 app_packager_doctor 同一份报告,可只查某个平台或全部,每个失败项都带修复提示。
- 项目 —— 登记/删除项目:填「项目总文件夹」即可(例如 /Users/you/work/projects,也可以填多个,逗号或换行分隔),引擎会自动往下扫一层,把里面的 uni-app x 项目一次性全部登记;整个列表用「项目列表」一个折叠开关;每个已登记项目显示源码目录与启用的平台,并各自带两步确认的「删除」——只删引擎目录里的 config/projects/<id>.env,不动项目源码。
- 打包选项与范围 —— 一张卡片装「怎么打」和「打哪些」:上面是参数,下面就是打包入口(平台 × 项目,不勾项目 = 该平台全部项目)。一组选择在一个任务里串行执行,日志用 ▶ i/n 标出;打包前会先按同一组项目与平台跑一次环境检查,有 [FAIL] 就停下并把失败项列出来,让用户先处理,通过后才真正开始打包。参数部分:版本号;全量权限开关(默认跟随 config/settings.env 的 FULL_PERMISSION_PROFILE,可以只对这一次打包改);iOS 包型(测试包 Ad Hoc / 正式包 App Store / development / enterprise,按项目 Bundle ID 挑描述文件,本机没有该类型时灰掉并说明原因);描述文件下拉(列出签名目录里的 .mobileprovision,带包型、Bundle ID 与是否过期,留空=按包型或项目接线自动选);自定义配置项(每行一个 KEY=VALUE 覆盖打包参数,如 MARKETING_VERSION=1.2.3,可从项目自带的 scripts/ios-package/env/.env 载入预设,路径类键不允许覆盖);HarmonyOS debug 包 与 保留构建目录 收进「高级选项」。
- 上传 —— 只上传「上一次打包」已经归档的安装包,不重新打包:逐行列出 packages/iOS|Android|HarmonyOS/<项目ID>-latest.json 记下的产物(显示名、版本、大小、打包时间,安装包已被清理就标出来),每行一个「上传」按钮起一个独立的 upload <平台> <项目> --to <平台> 任务;板块里还有分发平台勾选(来自引擎 config/upload.env 中真正可用的平台,勾选的拼成一个逗号分隔的 --to)与密钥行 —— 蒲公英除 API Key 外还支持可选的 User Key(旧版接口的 uKey,写 PGYER_USER_KEY,官方 CLI 与 API 2.0 不用它),每把都带「已配置 / 未配置」状态。同一组分发平台勾选也出现在「打包选项」里的「打包后上传」:打包完就把这次新打出来的包传上去,一个都不勾就只打包(发 noUpload)。点「保存」只写当前那一个字段,所以存 User Key 不会顺手清掉 API Key;两把都写进引擎目录的 config/upload.local.env(mode 600),GET state 只回「配没配」的布尔值,明文不回浏览器。
- SDK —— 读出本机 HBuilderX 与其版本系列,逐平台显示 SDK 状态(ready / mismatch / missing)与目录;「一键配置」按需下载并解压对应的 iOS / Android / HarmonyOS SDK,「处理已下载的 SDK」导入已经放在 sdk/ 里的压缩包,每行还给 DCloud 官方下载页、并写出该平台该找的压缩包文件名(HarmonyOS 标的是 DevEco 的 ohpm 包名),iOS 另有系列推出的官方直链)。
- 升级插件 —— 把 dsh-app-packager@latest 装回当前 profile;升级期间引擎目录先改名让开,所以已下载的 SDK、证书与已登记项目不会被重装删掉。
- 任务 —— 当前 check/build/upload 的实时引擎日志、判定结果(出现 [FAIL] 或非零退出码即失败)与「停止」按钮。

面板只调用宿主侧注册的同源路由(/api/app-packager/state|init|doctor|pick|project|project/remove|job|job/log|job/kill|job/clear|upload/credential),打包始终在宿主进程里跑,不在浏览器里执行。headless profile 里不出现面板,四个工具照常可用。

平台支持

| 能力 | macOS | Windows | Linux |
| list / doctor / env(纯 Node) | ✅ | ✅ | ✅ |
| 引擎交付、项目扫描 | ✅ | ✅ | ✅ |
| Android APK 打包 | ✅ | ⚠️ 需 Git for Windows 或 WSL(HBuilderX + JDK 需在对应环境内) | ⚠️ 同上 |
| HarmonyOS HAP 打包 | ✅ | ⚠️ 同上 | ⚠️ 同上 |
| iOS IPA 打包 | ✅ | ❌(iOS 只能在 macOS 上签名打包) | ❌ |

Windows 上 CLI 会自动寻找 Git Bash(%ProgramFiles%\Git\bin\bash.exe)或回退到 wsl.exe,并做路径转换;可用 APP_PACKAGER_BASH 指定自己的 bash。细节见 docs/zh-CN/windows.md。

CI 在 ubuntu-latest / windows-latest / macos-latest × Node 18/20/22 上跑单测与 init / list / doctor 冒烟,所以纯 Node 那几行是三个系统实测过的;真机 Android / HarmonyOS 出包(需要 HBuilderX 与本机 JDK、Android SDK)没有 CI 覆盖。

仓库结构

packages/
app-packager/ # CLI + 打包引擎(engine/ 为原 bash 工具链,原样保留) bin/app-packager.mjs # 可执行入口 src/ # home / projects / engine / doctor / cli engine/ # 打包工具.command、初始化.command、lib/、config/、signing/…
dsh-app-packager/ # DeepSeek Harness 插件:四个工具(index.js、web.js)+ Web 面板(client.js) .github/workflows/ci.yml # 三平台 × Node 18/20/22 + 打包检查 docs/zh-CN/ # 发布上架、Windows 说明、架构(中文) docs/en/ # 对应英文版 AGENTS.md # AI 助手与维护者规则

引擎侧(packages/app-packager/engine/)保持原项目的目录布局和运行方式不变,原有文档 项目介绍.md 仍是引擎行为的权威说明。

文档

| 文档 | 中文 | English |
| 架构与模块 | architecture.md | architecture.md |
| 发布与插件市场上架 | publishing.md | publishing.md |
| Windows / Linux | windows.md | windows.md |
| 参与贡献 | CONTRIBUTING.zh-CN.md | CONTRIBUTING.md |
| 引擎行为说明 | 项目介绍.md | —(引擎侧文档保持中文) |

开发

pnpm install
pnpm test # 先跑下面的守卫,再跑两个包的 node --test 用例
pnpm guard:check # 业务项目配置、密钥、证书一律不许提交进来
pnpm docs:check # 中英文档配对与链接检查
pnpm cli list # 直接跑本地 CLI
pnpm doctor

改动约定见 AGENTS.md(铁律:改引擎必须同提交更新引擎说明;中英文档必须成对)。

许可

MIT © 2026 lw0129a
预览分享卡片长什么样 ↓lw0129a/dsh-app-packager
分享 · DeepSeek Harness Hub
lw0129a/dsh-app-packager

把 uni-app x 项目一键打成三端安装包

回到顶部