add:增加导出组件和为组件全局增加属性功能

This commit is contained in:
lhj
2024-11-10 01:40:35 +08:00
parent 59b129d7b4
commit 991e003e20

View File

@ -5,6 +5,8 @@ import { IComponent } from '../type/IComponent';
const componentsDir = path.join(__dirname, '../schemes/components'); const componentsDir = path.join(__dirname, '../schemes/components');
const outputJsonPath = path.join(__dirname, '../schemes/scheme.json'); // 输出到当前目录 const outputJsonPath = path.join(__dirname, '../schemes/scheme.json'); // 输出到当前目录
const outputTsPath = path.join(__dirname, '../schemes/scheme.ts'); // 输出到当前目录 const outputTsPath = path.join(__dirname, '../schemes/scheme.ts'); // 输出到当前目录
const exportModifiedComponentsDir = path.join(__dirname, '../schemes/exported-components'); // 导出修改后的组件文件夹
const exportModifiedComponents = true; // 控制是否导出修改后的组件文件
async function readComponents(): Promise<IComponent[]> { async function readComponents(): Promise<IComponent[]> {
const files = await fs.readdir(componentsDir); const files = await fs.readdir(componentsDir);
@ -26,11 +28,44 @@ async function readComponents(): Promise<IComponent[]> {
function mergeComponents(components: IComponent[]): Record<string, IComponent> { function mergeComponents(components: IComponent[]): Record<string, IComponent> {
return components.reduce((acc, component) => { return components.reduce((acc, component) => {
acc[component.type] = component; // 设置默认属性
const updatedComponent = {
...component,
visible: true, // 统一设置 visible 为 true
disable: false // 统一设置 disable 为 false
};
acc[updatedComponent.type] = updatedComponent;
return acc; return acc;
}, {} as Record<string, IComponent>); }, {} as Record<string, IComponent>);
} }
async function writeModifiedComponents(components: IComponent[]): Promise<void> {
if (!exportModifiedComponents) return;
try {
await fs.mkdir(exportModifiedComponentsDir, { recursive: true });
for (const component of components) {
const updatedComponent = {
...component,
visible: true, // 统一设置 visible 为 true
disable: false // 统一设置 disable 为 false
};
const fileName = `${component.type}.json`;
const filePath = path.join(exportModifiedComponentsDir, fileName);
const content = JSON.stringify(updatedComponent, null, 2);
await fs.writeFile(filePath, content);
console.log(`Modified component ${fileName} has been written to ${filePath}`);
}
} catch (error) {
console.error(`Error writing modified components:`, error);
throw error;
}
}
async function writeMergedScheme(mergedScheme: Record<string, IComponent>): Promise<void> { async function writeMergedScheme(mergedScheme: Record<string, IComponent>): Promise<void> {
try { try {
const jsonContent = JSON.stringify(mergedScheme, null, 2); const jsonContent = JSON.stringify(mergedScheme, null, 2);
@ -50,6 +85,9 @@ async function writeMergedScheme(mergedScheme: Record<string, IComponent>): Prom
async function main() { async function main() {
try { try {
const components = await readComponents(); const components = await readComponents();
if (exportModifiedComponents) {
await writeModifiedComponents(components);
}
const mergedScheme = mergeComponents(components); const mergedScheme = mergeComponents(components);
await writeMergedScheme(mergedScheme); await writeMergedScheme(mergedScheme);
} catch (error) { } catch (error) {