Files
2026-09-09 12:18:17 +08:00

40 lines
1.9 KiB
JavaScript

import fs from 'node:fs'
import path from 'node:path'
import { createRequire } from 'node:module'
import { execFileSync } from 'node:child_process'
const root = 'D:/web/zyt'
const require = createRequire(path.join(root, 'admin/package.json'))
const { parse, compileScript, compileTemplate, compileStyleAsync } = require('@vue/compiler-sfc')
const changed = execFileSync('git', ['diff', '--name-only', '--', 'admin/src'], { cwd: root, encoding: 'utf8' })
const files = changed.trim().split(/\r?\n/).filter((file) => file.endsWith('.vue'))
files.push('admin/src/views/consumer/prescription/components/PrescriptionOrderTimeDialog.vue')
const results = []
for (const file of [...new Set(files)]) {
const filename = path.join(root, file)
const { descriptor, errors } = parse(fs.readFileSync(filename, 'utf8'), { filename })
const diagnostics = [...errors]
try {
const script = compileScript(descriptor, { id: file })
if (descriptor.template) {
diagnostics.push(...compileTemplate({
id: file, filename, source: descriptor.template.content,
compilerOptions: { bindingMetadata: script.bindings }
}).errors)
}
for (const style of descriptor.styles) {
const output = await compileStyleAsync({
id: file, filename, source: style.content, scoped: style.scoped,
preprocessLang: style.lang, preprocessCustomRequire: require
})
diagnostics.push(...output.errors)
}
} catch (error) {
diagnostics.push(error)
}
results.push({ file, errors: diagnostics.map(String) })
}
fs.writeFileSync(path.join(root, 'artifacts/prescription-enhancements/vue-compile.json'), JSON.stringify(results, null, 2))
console.log(JSON.stringify(results, null, 2))
process.exitCode = results.some((result) => result.errors.length) ? 1 : 0