Files
CipherTalk/scripts/run-electron-builder.cjs
T
2026-04-08 18:36:10 +08:00

58 lines
1.5 KiB
JavaScript

const { spawnSync } = require('child_process')
const path = require('path')
const fs = require('fs')
const pkg = require('../package.json')
const target = process.argv[2]
if (!target || !['win', 'mac'].includes(target)) {
console.error('Usage: node scripts/run-electron-builder.cjs <win|mac>')
process.exit(1)
}
const cliPath = require.resolve('electron-builder/cli.js')
const configPath = path.join(__dirname, 'electron-builder.config.cjs')
function cleanupBlockmapFiles(buildTarget) {
if (buildTarget !== 'mac') {
return
}
const releaseDir = path.join(__dirname, '..', 'release')
if (!fs.existsSync(releaseDir)) {
return
}
for (const name of fs.readdirSync(releaseDir)) {
if (!name.endsWith('.dmg.blockmap')) {
continue
}
fs.rmSync(path.join(releaseDir, name), { force: true })
console.log(`🧹 Removed obsolete blockmap: ${name}`)
}
}
const result = spawnSync(
process.execPath,
[cliPath, `--${target}`, '--publish', 'never', '--config', configPath],
{
stdio: 'inherit',
env: {
...process.env,
CIPHERTALK_BUILD_TARGET: target,
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
}
}
)
// 构建阶段只要求安装包产物存在,自动更新元数据交给后续发布阶段校验。
const artifactName = target === 'mac'
? `release/CipherTalk-${pkg.version}-Setup.dmg`
: `release/CipherTalk-${pkg.version}-Setup.exe`
if (!fs.existsSync(path.join(__dirname, '..', artifactName))) {
process.exit(result.status || 1)
}
cleanupBlockmapFiles(target)