UNPKG

@byloth/eslint-config-typescript

Version:

A collection of some common sense linting rules for TypeScript projects. ✔

73 lines (67 loc) 2.39 kB
import eslintJs from "@byloth/eslint-config"; import eslintTs from "@typescript-eslint/eslint-plugin"; import eslintImport from "eslint-plugin-import"; const DYNAMIC_LEVEL = (process.env.NODE_ENV === "production") ? "error" : "warn"; const flatStylisticRules = eslintTs.configs["flat/stylistic"] .find(({ name }) => (name === "typescript-eslint/stylistic")); const tsParser = eslintTs.configs["flat/strict"] .find(({ name }) => (name === "typescript-eslint/base")).languageOptions.parser; export default [...eslintJs, ...eslintTs.configs["flat/strict"], flatStylisticRules, { plugins: { import: eslintImport }, rules: { "@typescript-eslint/ban-ts-comment": DYNAMIC_LEVEL, "@typescript-eslint/consistent-type-imports": "error", "@typescript-eslint/no-import-type-side-effects": "error", "@typescript-eslint/no-invalid-void-type": "off", "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-shadow": DYNAMIC_LEVEL, "@typescript-eslint/no-unused-vars": [DYNAMIC_LEVEL, { args: "none", ignoreRestSiblings: true, varsIgnorePattern: "^_" }], "@typescript-eslint/no-useless-constructor": "error", "@typescript-eslint/unified-signatures": "off", "import/consistent-type-specifier-style": ["error", "prefer-top-level"] } }, { files: ["**/*.cjs", "**/*.js", "**/*.mjs"], rules: { "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-var-requires": "off" } }, { files: ["**/.babelrc"], rules: { "@typescript-eslint/no-var-requires": "off" } }, { files: ["**/*.ts", "**/*.mts"], rules: { "no-dupe-class-members": "off", "no-redeclare": "off", "no-shadow": "off", "no-useless-constructor": "off", "no-unused-vars": "off" } }, { files: ["**/*.vue"], languageOptions: { parserOptions: { parser: tsParser } } }, { files: ["**/*.config.ts", "**/*.config.mts"], rules: { "@stylistic/indent": ["error", 2, { SwitchCase: 1 }], "@stylistic/indent-binary-ops": ["error", 2] } }, { files: ["**/*.d.ts"], rules: { "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-restricted-types": "off", "@typescript-eslint/no-unused-vars": "off" } }, { files: ["**/*.json"], rules: { "@typescript-eslint/no-unused-expressions": "off" } }];