test(package): 加打包产物冒烟检查 (原生模块解包 + 从 app.asar 真实 spawn)
自测 (scripts/selftest/main.ts) 是从**源码**跑的, 用 pty 桩, 根本不碰 app.asar。 而 asarUnpack 配错这类问题只在**打包产物**上才暴露, 且 Linux 上看不出来 (只需要一个 .node, Electron 能 dlopen 归档里的; 但 unpacked 里没有就彻底找不到), 到 Windows 才炸 (conpty.dll / OpenConsole.exe / worker 脚本都必须是真实文件)。 新增 scripts/selftest/packaging-check.cjs (npm run selftest:package): - node-pty 平台包的 prebuilds 下必须有 .node/.dll/.exe (即规则递归生效) - 其它原生模块 (node-hid / serialport / node-usb) 也要解包 - 从 app.asar 里 require node-pty 并真实 spawn, 验证拿到输出 已用人为破坏的解包布局验证过这个检查确实会失败: "平台包的 prebuilds 下没有任何原生文件 —— 规则可能没递归" "Failed to load native module: pty.node"
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
"typecheck": "npm run typecheck:node && npm run typecheck:web",
|
||||
"selftest:build": "esbuild scripts/selftest/main.ts --bundle --platform=node --format=cjs --target=node20 --outfile=scripts/selftest/.out/selftest.cjs --alias:electron=./scripts/selftest/electron-stub.cjs --alias:@lydell/node-pty=./scripts/selftest/pty-shim.cjs --external:better-sqlite3 --external:serialport --external:usb --external:node-hid --external:sudo-prompt --external:ws",
|
||||
"selftest": "npm run selftest:build && cross-env ELECTRON_RUN_AS_NODE=1 electron scripts/selftest/.out/selftest.cjs",
|
||||
"selftest:package": "cross-env ELECTRON_RUN_AS_NODE=1 electron scripts/selftest/packaging-check.cjs",
|
||||
"package:win": "cross-env ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ electron-vite build && electron-builder --win --x64",
|
||||
"package:mac": "cross-env ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ electron-vite build && electron-builder --mac",
|
||||
"package:linux": "cross-env ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ electron-vite build && electron-builder --linux",
|
||||
|
||||
Reference in New Issue
Block a user