Files
console-dev/eslint.config.mjs
cieanyau 651c36367f
前端验证 / verify (push) Failing after 15m2s
接入 ESLint 与 Prettier 并加入 CI 静态门禁
2026-11-07 01:24:36 +08:00

72 lines
2.0 KiB
JavaScript

import js from "@eslint/js";
import ts from "typescript-eslint";
import vue from "eslint-plugin-vue";
import globals from "globals";
import prettier from "eslint-config-prettier/flat";
export default [
{
ignores: [
"node_modules/**",
".nuxt/**",
".output/**",
".data/**",
"test-results/**",
"tests/fixtures/runs/**",
"docs/**",
".claude/skills/crashwork-ops/**",
"public/**",
],
},
{
linterOptions: { reportUnusedDisableDirectives: "error" },
},
js.configs.recommended,
...vue.configs["flat/essential"],
...ts.configs.recommended.map((config) => ({
...config,
files: ["**/*.{ts,mts,cts}"],
})),
{
files: ["app/**/*.{js,vue}"],
languageOptions: { globals: globals.browser },
},
{
files: ["*.mjs", "nuxt.config.ts", "scripts/**/*.mjs", "tests/**/*.mjs"],
languageOptions: { globals: globals.node },
},
{
// Playwright 的 evaluate 回调在浏览器运行,测试文件同时使用 Node 与 DOM 全局。
files: ["tests/**/*.mjs"],
languageOptions: { globals: globals.browser },
},
{
// Nuxt 路由和布局文件名由框架约定,不能要求多词组件名。
files: ["app/pages/**/*.vue", "app/layouts/**/*.vue"],
rules: { "vue/multi-word-component-names": "off" },
},
{
// 恢复的互操作辅助只在宿主提供 require 时访问它,不为浏览器注入 Node 全局。
files: ["app/lib/rolldown-runtime.js"],
languageOptions: { globals: { require: "readonly" } },
},
{
files: ["nuxt.config.ts"],
languageOptions: { globals: { defineNuxtConfig: "readonly" } },
},
{
// 最佳努力清理和存储降级允许空 catch;其他空块仍报错。
rules: {
"no-empty": ["error", { allowEmptyCatch: true }],
},
},
{
files: ["**/*.{js,mjs,cjs,vue}"],
rules: {
// 恢复的渲染回调保留位置参数,catch 也可不使用错误绑定;局部绑定仍检查。
"no-unused-vars": ["error", { args: "none", caughtErrors: "none" }],
},
},
prettier,
];