t56-sfc-check.mjs 896 B

1234567891011121314151617
  1. // 票 56(第二轮):PanelBlocks.vue SFC 编译自检(t48-sfc-check 同款,只查本票改动文件)。
  2. import { readFileSync } from 'node:fs'
  3. import { parse, compileScript, compileTemplate } from 'vue/compiler-sfc'
  4. const ROOT = new URL('../../../', import.meta.url)
  5. const rel = 'src/modules/cockpit/components/PanelBlocks.vue'
  6. const source = readFileSync(new URL(rel, ROOT), 'utf8')
  7. const { descriptor, errors } = parse(source, { filename: rel })
  8. if (errors.length) { console.log(`FAIL parse — ${errors[0].message}`); process.exit(1) }
  9. try {
  10. compileScript(descriptor, { id: rel })
  11. const tpl = compileTemplate({ source: descriptor.template.content, filename: rel, id: rel })
  12. if (tpl.errors.length) throw new Error(tpl.errors[0])
  13. console.log('PASS compile PanelBlocks.vue')
  14. } catch (error) {
  15. console.log(`FAIL compile — ${error.message}`)
  16. process.exit(1)
  17. }