/** * ESLint flat config(根)—— 装配本地架构红线 plugin + 基础 JS 规则。 * * 声明式:判定逻辑全在 `tools/eslint-rules/*.js`,红线装配(白名单 / 规则集 / globals) * 单源于 `tools/eslint-rules/config.js`,本文件与 `packages/config/eslint` 都从那里 import, * 不各自再抄一份。根配置只 import 相对路径的 `tools/eslint-rules/*`,不 import 任何 workspace 包 * (避免把 config 的依赖拖进 lint 链)。 * * composition-root / vite 配置白名单在单源 `config.js` 里维护,新增豁免点先改任务文档再改那里。 */ import js from '@eslint/js' import { dramaPlugin } from './tools/eslint-rules/index.js' import { buildArchRules, BASE_GLOBALS, BROWSER_GLOBALS, COMMONJS_GLOBALS, } from './tools/eslint-rules/config.js' const ARCH_RULES = buildArchRules() export default [ { ignores: [ '**/node_modules/**', '**/dist/**', '**/coverage/**', 'tmp/**', ], }, js.configs.recommended, { files: ['**/*.js', '**/*.mjs'], languageOptions: { ecmaVersion: 2023, sourceType: 'module', globals: { ...BASE_GLOBALS, ...BROWSER_GLOBALS, }, }, plugins: { drama: dramaPlugin }, rules: { ...ARCH_RULES }, }, { files: ['**/*.cjs'], languageOptions: { ecmaVersion: 2023, sourceType: 'commonjs', globals: { ...COMMONJS_GLOBALS }, }, plugins: { drama: dramaPlugin }, rules: { ...ARCH_RULES }, }, { // 规则/预设单测 fixture 含故意违规代码与故意的 env 操作,不参与全仓 lint。 ignores: ['tools/eslint-rules/test/**', 'packages/config/test/**'], }, ]