需求:模板中至少有一个 DOM 元素或自定义组件带 data-xxx 属性或 v-data-xxx 指令。
module.exports ={meta:{type:'problem',docs:{description:'Enforce at least one data-xxx or v-data-xxx attribute in template',category:'Best Practices',recommended:true},fixable:null,schema:[]},create(context){return{/*
* 只能匹配“指令”属性(v-data-xxx),若要同时检测普通 DOM 属性(如 data-xxx),需再写一条非指令属性选择器:
* 'VAttribute[directive=false][key.name^="data-"]'(node) { ... }
* 'VAttribute[directive=true][key.name.name^="data-"]'(node) {...}
* 改用 VElement 统一检查所有属性,无需区分指令与普通 DOM 属性
*/VElement(node){const hasDataAttr = node.startTag.attributes.some(attr=>{const name = attr.directive ? attr.key.name.name : attr.key.name
return name.startsWith('data-')})if(!hasDataAttr){
context.report({
node,message:'Template must contain at least one data-xxx or v-data-xxx attribute'})}}}}}