Files
ONE-OS/axhub-make/scripts/generate-html.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

75 lines
2.1 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* 为所有 components 和 prototypes 生成 index.html 文件
* 使用统一的模板
*/
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const srcDir = path.resolve(__dirname, '../src');
const templatePath = path.join(srcDir, 'common/dev-template.html');
const elementsDir = path.join(srcDir, 'components');
const pagesDir = path.join(srcDir, 'prototypes');
let generatedCount = 0;
// 读取模板
if (!fs.existsSync(templatePath)) {
console.error('错误: 模板文件不存在:', templatePath);
process.exit(1);
}
const template = fs.readFileSync(templatePath, 'utf8');
function generateHtmlFiles(dir, type) {
if (!fs.existsSync(dir)) {
return;
}
const items = fs.readdirSync(dir);
for (const item of items) {
const itemPath = path.join(dir, item);
const stat = fs.statSync(itemPath);
if (stat.isDirectory()) {
const tsxPath = path.join(itemPath, 'index.tsx');
const htmlPath = path.join(itemPath, 'index.html');
// 只有存在 index.tsx 才生成 HTML
if (fs.existsSync(tsxPath)) {
// 生成标题
let title = 'Dev Preview';
if (type === 'components') {
title = `Element: ${item} - Dev Preview`;
} else if (type === 'prototypes') {
title = `Page: ${item} - Dev Preview`;
}
// 替换模板变量
let html = template.replace('{{TITLE}}', title);
html = html.replace('{{ENTRY}}', './index.tsx');
// 写入文件
fs.writeFileSync(htmlPath, html, 'utf8');
console.log(`生成: ${path.relative(srcDir, htmlPath)}`);
generatedCount++;
}
}
}
}
console.log('开始生成 HTML 文件...\n');
generateHtmlFiles(elementsDir, 'components');
generateHtmlFiles(pagesDir, 'prototypes');
console.log(`\n完成!共生成 ${generatedCount} 个 HTML 文件。`);
console.log('所有 HTML 文件都基于统一模板: src/common/dev-template.html');