/** * 为 core 构建生成插件组件占位文件 */ const fs = require('fs') const path = require('path') const { ROOT, listAddonKeys, walkFiles, BRIDGE_STUB_ROOT } = require('./addon-utils.cjs') const STUB_ROOT = BRIDGE_STUB_ROOT const STUB_VUE = ` ` function stubPaths(key, relPath) { const vueOut = path.join(STUB_ROOT, key, 'components', relPath) return { vueOut, isDiy: /^diy\//.test(relPath) } } function generateAddonComponentStubs() { if (fs.existsSync(STUB_ROOT)) { fs.rmSync(STUB_ROOT, { recursive: true, force: true }) } let count = 0 for (const key of listAddonKeys()) { const compDir = path.join(ROOT, 'src', 'addon', key, 'components') if (!fs.existsSync(compDir)) continue const files = walkFiles(compDir, (f) => f.endsWith('.vue'), compDir) for (const file of files) { const { vueOut, isDiy } = stubPaths(key, file) if (isDiy) continue fs.mkdirSync(path.dirname(vueOut), { recursive: true }) fs.writeFileSync(vueOut, STUB_VUE, 'utf-8') count++ } } console.log(`[generate-addon-stubs] ${count} non-diy component stubs`) } generateAddonComponentStubs()