promote-all-knowledge.js 1.1 KB

12345678910111213141516171819202122232425
  1. /**
  2. * Generate COMPONENT_PROPERTIES from saved dev-knowledge JSON files.
  3. * Does NOT re-parse d.ts — uses the saved knowledge (which has runtime defaults).
  4. */
  5. const path = require('path');
  6. const fs = require('fs');
  7. const mod = require(path.resolve(__dirname, '../dist/tools/cocos/utils/component-knowledge'));
  8. const files = mod.listKnowledgeFiles();
  9. const snippets = [];
  10. for (const comp of files) {
  11. const knowledge = mod.loadKnowledgeFile(comp);
  12. if (!knowledge) continue;
  13. snippets.push(mod.generateTsSnippet(comp, knowledge));
  14. const propCount = Object.keys(knowledge.properties).length;
  15. const defaultCount = Object.values(knowledge.properties).filter(p => p.default !== undefined).length;
  16. console.log(` ${comp.padEnd(35)} ${propCount} props, ${defaultCount} with defaults`);
  17. }
  18. const outputPath = path.resolve(__dirname, '../dev-knowledge/COMPONENT_PROPERTIES_GENERATED.txt');
  19. const header = `const COMPONENT_PROPERTIES: Record<string, any> = {\n`;
  20. const footer = `\n};\n`;
  21. fs.writeFileSync(outputPath, header + snippets.join('\n') + footer, 'utf-8');
  22. console.log(`\nGenerated ${files.length} components → ${outputPath}`);