Files
ONE-OS/axhub-make/scripts/build-all.js
王冕 a27e3b8e43 feat: sync full workspace including web modules, docs, and configurations to Gitea
Optimized the root .gitignore to exclude virtual environments, node modules,
and temp folders to ensure clean and lightweight version tracking.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 18:12:25 +08:00

49 lines
1.6 KiB
JavaScript

import { spawnSync } from 'child_process';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { scanProjectEntries, writeEntriesManifestAtomic } from '../vite-plugins/utils/entriesManifestCore.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const workspaceRoot = path.resolve(__dirname, '..');
const entriesPath = path.resolve(workspaceRoot, '.axhub/make/entries.json');
// Always rescan before build to keep entries manifest fresh and deterministic.
const scanned = scanProjectEntries(workspaceRoot, ['components', 'prototypes', 'themes']);
const entries = writeEntriesManifestAtomic(workspaceRoot, scanned);
if (!fs.existsSync(entriesPath)) {
console.error('.axhub/make/entries.json 写入失败,无法继续构建。');
process.exit(1);
}
const jsEntries = entries.js || {};
const entryKeys = Object.keys(jsEntries);
if (entryKeys.length === 0) {
console.log('未发现 JS 入口,跳过构建。');
process.exit(0);
}
const distDir = path.resolve(workspaceRoot, 'dist');
if (fs.existsSync(distDir)) {
fs.rmSync(distDir, { recursive: true, force: true });
}
for (const key of entryKeys) {
console.log(`\n==== 构建入口: ${key} ====\n`);
const result = spawnSync('npx', ['vite', 'build'], {
cwd: workspaceRoot,
env: { ...process.env, ENTRY_KEY: key },
stdio: 'inherit'
});
if (result.status !== 0) {
console.error(`构建 ${key} 失败,退出码 ${result.status}`);
process.exit(result.status ?? 1);
}
}
console.log('\n所有入口构建完成 ✅');