rr
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const chokidar = require('chokidar');
|
||||
const { parse } = require('@babel/parser');
|
||||
const { codeFrameColumns } = require('@babel/code-frame');
|
||||
|
||||
// 配置常量
|
||||
const AUTO_START = '/* auto-generated-start */';
|
||||
const AUTO_END = '/* auto-generated-end */';
|
||||
const INDENT = ' '; // 缩进2空格
|
||||
|
||||
// 配置文件路径
|
||||
// const CONFIG_PATH = path.join(__dirname, '../config/dynamic-config.js');
|
||||
const CONFIG_PATH = "/Users/bmy/source/TsxVueClassApi/src/core/config/configure.config.ts";
|
||||
const TARGET_PATH = path.join(__dirname, 'templates/TargetClass.ts');
|
||||
|
||||
function generateClassMethods(keys) {
|
||||
// 读取目标文件
|
||||
let targetContent;
|
||||
try {
|
||||
targetContent = fs.readFileSync(TARGET_PATH, 'utf8');
|
||||
} catch {
|
||||
targetContent = `${AUTO_START}\n${AUTO_END}`;
|
||||
}
|
||||
|
||||
// 生成新方法代码
|
||||
const newMethods = keys.map(key =>
|
||||
`${INDENT}public ${key}() {\n${INDENT} // Auto-generated\n${INDENT}}`
|
||||
).join('\n\n');
|
||||
|
||||
// 替换标记区域
|
||||
const newContent = targetContent.replace(
|
||||
new RegExp(`${AUTO_START}([\\s\\S]*?)${AUTO_END}`),
|
||||
`${AUTO_START}\n${newMethods}\n${INDENT}${AUTO_END}`
|
||||
);
|
||||
|
||||
// 格式校验
|
||||
try {
|
||||
parse(newContent, { plugins: ['typescript'] });
|
||||
fs.writeFileSync(TARGET_PATH, newContent);
|
||||
} catch (err) {
|
||||
console.error('⚠️ 生成代码语法错误:');
|
||||
console.log(codeFrameColumns(newContent, err.loc, { highlightCode: true }));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user