| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- const fs = require('fs')
- const path = require('path')
- const compiler = require('vue-template-compiler')
- const roots = [
- path.join(__dirname, '../src/views'),
- path.join(__dirname, '../../saas-mgnui/src/views'),
- path.join(__dirname, '../../adminui/src/views')
- ]
- function walk(dir, files = []) {
- if (!fs.existsSync(dir)) return files
- for (const name of fs.readdirSync(dir)) {
- const full = path.join(dir, name)
- if (fs.statSync(full).isDirectory()) walk(full, files)
- else if (name.endsWith('.vue')) files.push(full)
- }
- return files
- }
- function rootTemplate(content) {
- const scriptIdx = content.search(/<script[\s>]/)
- const block = scriptIdx >= 0 ? content.slice(0, scriptIdx) : content
- const start = block.indexOf('<template>')
- const end = block.lastIndexOf('</template>')
- if (start < 0 || end <= start) return null
- return block.slice(start + '<template>'.length, end)
- }
- const errors = []
- for (const root of roots) {
- for (const file of walk(root)) {
- const content = fs.readFileSync(file, 'utf8')
- const tpl = rootTemplate(content)
- if (!tpl) continue
- const result = compiler.compile(tpl, { whitespace: 'preserve' })
- if (result.errors && result.errors.length) {
- errors.push({ file, messages: result.errors })
- }
- }
- }
- console.log('Template compile errors:', errors.length)
- for (const e of errors) {
- console.log('\n' + e.file.replace(/\\/g, '/'))
- for (const msg of e.messages.slice(0, 5)) console.log(' ', msg)
- if (e.messages.length > 5) console.log(' ', `... +${e.messages.length - 5} more`)
- }
|