72 lines
2.0 KiB
JavaScript
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,
|
|
];
|