r-util-js/eslint.config.js

155 lines
3.8 KiB
JavaScript
Raw Normal View History

2026-03-16 17:58:57 +08:00
import js from "@eslint/js";
import ts from "typescript-eslint";
import prettier from "eslint-config-prettier";
2026-04-20 17:54:26 +08:00
import prettierPlugin from "eslint-plugin-prettier";
2026-03-16 17:58:57 +08:00
import globals from "globals";
2026-04-20 17:54:26 +08:00
import importPlugin from "eslint-plugin-import-x";
import vuePlugin from "eslint-plugin-vue";
import vueParser from "vue-eslint-parser";
2026-03-16 17:58:57 +08:00
export default [
2026-05-28 11:30:35 +08:00
// 应用推荐规则
2026-04-20 17:54:26 +08:00
js.configs.recommended,
...ts.configs.recommended,
...vuePlugin.configs["flat/recommended"],
2026-04-20 17:54:26 +08:00
prettier,
2026-03-16 17:58:57 +08:00
// 基础配置
{
files: ["**/*.{js,mjs,cjs,ts,vue}"],
ignores: [
"**/node_modules/*",
"**/dist/*",
"build/",
"public/",
"docs/",
"bin/",
"pnpm-lock.yaml",
".vscode/",
".idea/",
".husky/",
"Dockerfile",
".hbuilderx/",
".vite/",
"uni_modules/",
"libs/",
"static/",
"patches/",
"wxcomponents/",
"lib/",
"scripts/",
2026-03-16 17:58:57 +08:00
],
2026-04-20 17:54:26 +08:00
plugins: { prettier: prettierPlugin, "import-x": importPlugin },
languageOptions: {
globals: {
...globals.node,
...globals.browser,
},
ecmaVersion: "latest",
sourceType: "module",
parser: vueParser,
parserOptions: {
parser: ts.parser,
ecmaFeatures: {
impliedStrict: true,
},
extraFileExtensions: [".vue"],
},
},
2026-04-20 17:54:26 +08:00
settings: {
"import-x/resolver": {
typescript: {
2026-05-28 11:30:35 +08:00
project: [
"packages/common/tsconfig.json",
"packages/uni-app/tsconfig.json",
"packages/uview-plus/tsconfig.json",
"packages/vue2/tsconfig.json",
"packages/vue3/tsconfig.json",
"playground/vue3-app/tsconfig.json",
"playground/vue2-app/tsconfig.json",
"playground/uniapp-app/tsconfig.json",
2026-05-28 11:30:35 +08:00
],
2026-04-20 17:54:26 +08:00
},
node: true,
},
},
2026-03-16 17:58:57 +08:00
rules: {
2026-04-20 17:54:26 +08:00
...importPlugin.flatConfigs.recommended.rules,
2026-05-28 11:30:35 +08:00
// Prettier 规则
2026-04-20 17:54:26 +08:00
"prettier/prettier": "warn",
2026-03-16 17:58:57 +08:00
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
2026-04-20 17:54:26 +08:00
// Import 规则
"import-x/no-self-import": "error",
"import-x/no-cycle": "error",
"import-x/no-useless-path-segments": "error",
"import-x/no-extraneous-dependencies": "error",
"import-x/no-mutable-exports": "error",
"import-x/no-named-as-default": "error",
"import-x/no-named-as-default-member": "error",
"import-x/no-duplicates": "warn",
"import-x/no-deprecated": "warn",
"import-x/newline-after-import": "warn",
"import-x/first": "warn",
"import-x/order": [
"warn",
{
groups: [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index",
"object",
"type",
],
alphabetize: {
order: "asc",
},
},
],
2026-03-16 17:58:57 +08:00
},
},
// 测试文件覆盖配置
{
files: ["**/__tests__/*.{j,t}s?(x)", "**/tests/unit/**/*.spec.{j,t}s?(x)"],
languageOptions: {
globals: {
...globals.mocha,
...globals.jest,
},
},
},
2026-05-28 11:30:35 +08:00
// uni-app / App-Plus 运行时全局变量
{
files: [
"packages/uni-app/**/*.{js,ts,vue}",
2026-05-28 11:30:35 +08:00
"packages/common/src/printer/**/*.{js,ts}",
"playground/uniapp-app/**/*.{js,ts,vue}",
2026-05-28 11:30:35 +08:00
],
languageOptions: {
globals: {
uni: "readonly",
plus: "readonly",
wx: "readonly",
getCurrentPages: "readonly",
},
},
},
// playground 项目放宽部分规则
{
files: ["playground/**/*.{js,ts,vue}"],
rules: {
"import-x/no-extraneous-dependencies": "off",
"vue/multi-word-component-names": "off",
},
},
2026-03-16 17:58:57 +08:00
];