refactor: 统一错误处理机制

- 引入 ConfigError/TemplateError/BuildError/FileError 与 wrapAsyncError,统一错误输出
- generator 入口接入 wrapAsyncError,确保命令行执行路径一致
- 兜底逻辑使用 instanceof,保留 BuildError/TemplateError 上下文信息
- 合并格式化提交(仅缩进/换行调整)
This commit is contained in:
rbetree
2026-01-16 02:25:03 +08:00
parent 1a90f8fbe3
commit 89c1c0330b
31 changed files with 313 additions and 89 deletions

View File

@@ -1,8 +1,15 @@
const fs = require('fs');
const path = require('path');
const { getSubmenuForNavItem, assignCategorySlugs } = require('../config');
const { tryLoadArticlesFeedCache, buildArticlesCategoriesByPageCategories } = require('../cache/articles');
const { tryLoadProjectsRepoCache, applyRepoMetaToCategories, buildProjectsMeta } = require('../cache/projects');
const {
tryLoadArticlesFeedCache,
buildArticlesCategoriesByPageCategories,
} = require('../cache/articles');
const {
tryLoadProjectsRepoCache,
applyRepoMetaToCategories,
buildProjectsMeta,
} = require('../cache/projects');
const { getPageConfigUpdatedAtMeta } = require('../utils/pageMeta');
function prepareNavigationData(pageId, config) {
@@ -32,7 +39,12 @@ function resolveTemplateName(pageId, data) {
let templateName = explicitTemplate || pageId;
if (!explicitTemplate) {
const inferredTemplatePath = path.join(process.cwd(), 'templates', 'pages', `${templateName}.hbs`);
const inferredTemplatePath = path.join(
process.cwd(),
'templates',
'pages',
`${templateName}.hbs`
);
if (!fs.existsSync(inferredTemplatePath)) {
templateName = 'page';
}