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>
49 lines
1.6 KiB
JavaScript
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所有入口构建完成 ✅');
|