mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2026-06-28 08:52:04 +00:00
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
/**
|
||
* 编译单个 addon
|
||
*
|
||
* 流程:generate-addon-entry → vite lib build → sync-addon
|
||
* 输出 staging:dist/.addons/{key}/
|
||
* 同步部署目录:dist/assets/addons/{key}/
|
||
*
|
||
* 用法:
|
||
* node scripts/build-addon.cjs shop
|
||
* ADDON_KEY=shop node scripts/build-addon.cjs
|
||
*/
|
||
const { spawnSync } = require('child_process')
|
||
const fs = require('fs')
|
||
const path = require('path')
|
||
const { ROOT } = require('./addon-utils.cjs')
|
||
|
||
const key = process.argv[2] || process.env.ADDON_KEY
|
||
if (!key) {
|
||
console.error('Usage: node build-addon.cjs <addon-key>')
|
||
process.exit(1)
|
||
}
|
||
|
||
// 生成 .build/addons/{key}/entry.ts
|
||
require('./generate-addon-entry.cjs')
|
||
|
||
const env = {
|
||
...process.env,
|
||
ADDON_KEY: key,
|
||
NODE_OPTIONS: process.env.NODE_OPTIONS || '--max-old-space-size=4096'
|
||
}
|
||
|
||
console.log(`[build-addon] building "${key}"...`)
|
||
const r = spawnSync('npx', ['vite', 'build', '--config', 'vite.config.addon.ts'], {
|
||
cwd: ROOT,
|
||
env,
|
||
stdio: 'inherit',
|
||
shell: process.platform === 'win32'
|
||
})
|
||
|
||
if (r.status !== 0) {
|
||
console.error(`[build-addon] FAILED: ${key}`)
|
||
process.exit(r.status ?? 1)
|
||
}
|
||
|
||
// 复制到 dist/assets/addons 并更新 build-report.json
|
||
const sync = spawnSync('node', ['scripts/sync-addon.cjs', key], {
|
||
cwd: ROOT,
|
||
stdio: 'inherit',
|
||
shell: process.platform === 'win32'
|
||
})
|
||
if (sync.status !== 0) {
|
||
process.exit(sync.status ?? 1)
|
||
}
|
||
|
||
console.log(`[build-addon] OK: ${key}`)
|
||
process.exit(0)
|