liangjing-lint-start
Version:
增强版 React/TypeScript 项目 lint 和 prettier 配置工具 - 支持智能检测、多框架、配置预设
197 lines (190 loc) • 5.11 kB
JavaScript
// 配置预设 - 支持不同严格程度的配置
module.exports = {
// 严格模式 - 适合新项目或对代码质量要求极高的项目
strict: {
eslint: {
extends: [
"eslint:recommended",
"@typescript-eslint/recommended",
"@typescript-eslint/recommended-requiring-type-checking",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:jsx-a11y/recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"prettier",
],
rules: {
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-function-return-type": "error",
"@typescript-eslint/no-non-null-assertion": "error",
"react/prop-types": "error",
"no-console": "error",
"no-debugger": "error",
complexity: ["error", 10],
"max-depth": ["error", 4],
"max-lines-per-function": ["error", 50],
},
},
prettier: {
printWidth: 80,
tabWidth: 2,
semi: true,
singleQuote: true,
trailingComma: "all",
arrowParens: "always",
},
},
// 标准模式 - 平衡代码质量和开发效率
standard: {
eslint: {
extends: [
"eslint:recommended",
"@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"prettier",
],
rules: {
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_" },
],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-non-null-assertion": "warn",
"react/prop-types": "off",
"no-console": "warn",
"no-debugger": "error",
},
},
prettier: {
printWidth: 80,
tabWidth: 2,
semi: true,
singleQuote: true,
trailingComma: "es5",
arrowParens: "avoid",
},
},
// 宽松模式 - 适合遗留项目或快速原型开发
relaxed: {
eslint: {
extends: [
"eslint:recommended",
"@typescript-eslint/recommended",
"plugin:react/recommended",
"prettier",
],
rules: {
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": "warn",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-non-null-assertion": "off",
"react/prop-types": "off",
"no-console": "off",
"no-debugger": "warn",
"@typescript-eslint/ban-ts-comment": "off",
},
},
prettier: {
printWidth: 120,
tabWidth: 2,
semi: false,
singleQuote: true,
trailingComma: "none",
arrowParens: "avoid",
},
},
// 团队模式 - 适合多人协作的团队项目
team: {
eslint: {
extends: [
"eslint:recommended",
"@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"prettier",
],
rules: {
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_" },
],
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/consistent-type-imports": "error",
"react/prop-types": "off",
"no-console": "warn",
"no-debugger": "error",
"import/order": [
"error",
{
groups: [
"builtin",
"external",
"internal",
"parent",
"sibling",
"index",
],
"newlines-between": "always",
alphabetize: { order: "asc", caseInsensitive: true },
},
],
"prefer-const": "error",
"no-var": "error",
},
},
prettier: {
printWidth: 100,
tabWidth: 2,
semi: true,
singleQuote: true,
trailingComma: "es5",
arrowParens: "avoid",
bracketSpacing: true,
},
},
};
// 框架特定配置
module.exports.frameworks = {
// Next.js 配置
nextjs: {
extends: ["next/core-web-vitals"],
rules: {
"@next/next/no-img-element": "error",
"@next/next/no-html-link-for-pages": "error",
},
},
// Vite 配置
vite: {
env: {
browser: true,
es2020: true,
},
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
plugins: ["react-refresh"],
rules: {
"react-refresh/only-export-components": "warn",
},
},
// Vue 配置
vue: {
extends: [
"plugin:vue/vue3-essential",
"@vue/eslint-config-typescript",
"@vue/eslint-config-prettier",
],
rules: {
"vue/multi-word-component-names": "off",
"vue/no-unused-vars": "error",
},
},
};