| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- const fs = require('fs')
- const path = require('path')
- function walk(dir, 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 check(file) {
- const content = fs.readFileSync(file, 'utf8')
- const re = /<el-form-item[^>]*list-search-actions[^>]*>([\s\S]*?)<\/el-form-item>/g
- const issues = []
- let m
- while ((m = re.exec(content)) !== null) {
- const inner = m[1]
- if (/<el-form-item\b/.test(inner)) issues.push('nested-form-item')
- if (!/handleQuery|resetQuery|right-toolbar/.test(m[0])) issues.push('no-buttons')
- }
- return issues.length ? { file, issues } : null
- }
- const roots = process.argv.slice(2).length
- ? process.argv.slice(2)
- : [
- path.join(__dirname, '../src/views'),
- path.join(__dirname, '../../saas-mgnui/src/views'),
- path.join(__dirname, '../../adminui/src/views')
- ]
- let all = []
- for (const root of roots) {
- if (!fs.existsSync(root)) continue
- all = all.concat(walk(root).map(check).filter(Boolean))
- }
- console.log('issues', all.length)
- all.forEach((x) => console.log(x.file, x.issues.join(',')))
|