vue.js 1.12 KB
/**
 * Vue 专属 flat config 片段 —— `eslint-plugin-vue` + 浏览器全局。
 *
 * 只持有「Vue 包相对 node 预设额外需要的」默认数据:plugin-vue 的 flat 推荐配置 +
 * 浏览器运行时全局。与 node 预设是**数据拼接**关系(`presetVue = [...presetNode, ...vueBlocks]`),
 * 无运行时逻辑耦合(§4 职责边界)。
 */

import pluginVue from 'eslint-plugin-vue'
import { BROWSER_GLOBALS } from '../../../tools/eslint-rules/config.js'

export { BROWSER_GLOBALS }

/**
 * Vue flat config 片段数组(plugin-vue 的 flat 推荐 + 浏览器全局注入)。
 * `eslint-plugin-vue` 的 `flat/recommended` 已是 flat config 数组,直接平铺。
 * @returns {import('eslint').Linter.Config[]}
 */
export function buildVueBlocks() {
  const recommended = pluginVue.configs['flat/recommended'] || []
  return [
    ...recommended,
    {
      files: ['**/*.vue', '**/*.js'],
      languageOptions: {
        globals: { ...BROWSER_GLOBALS },
      },
    },
  ]
}

/** plugin-vue 是否真的进了预设(供测试静态断言)。 */
export const VUE_PLUGIN_NAME = 'eslint-plugin-vue'