UNPKG

@feathers-community/eslint-config

Version:

Default eslint-config for feathers-community projects. It's esm and flat config only.

145 lines (143 loc) 3.73 kB
// src/default-config.ts import eslint from "@eslint/js"; import tseslint from "typescript-eslint"; import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; import eslintPluginImportX from "eslint-plugin-import-x"; import tsParser from "@typescript-eslint/parser"; import unicorn from "eslint-plugin-unicorn"; import globals from "globals"; import unusedImports from "eslint-plugin-unused-imports"; import { configs as packageJsonConfigs } from "eslint-plugin-package-json"; import process from "process"; var defaultConfig = (options, ...userConfigs) => { const tsconfigPath = options?.tsconfig?.path ?? "./tsconfig.json"; const tsconfigRootDir = options?.tsconfig?.rootDir ?? process.cwd(); return tseslint.config( { ignores: [ "**/node_modules", "**/dist", "**/coverage", "docs/.vitepress/cache", "docs/.vitepress/dist", "**/*.d.ts", "**/*.cjs", "**/*.json" ] }, eslint.configs.recommended, // eslint-disable-next-line import-x/no-named-as-default-member tseslint.configs.recommended, { rules: { "no-unused-vars": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/consistent-type-imports": [ "error", { prefer: "type-imports", fixStyle: "separate-type-imports" } ] } }, eslintPluginImportX.flatConfigs.recommended, eslintPluginImportX.flatConfigs.typescript, { files: ["**/*.{ts,tsx}"], ignores: [], languageOptions: { parser: tsParser, parserOptions: { ecmaVersion: "latest", sourceType: "module", project: tsconfigPath, tsconfigRootDir } } }, { files: ["**/*.{js,mjs}"], languageOptions: { ecmaVersion: "latest", sourceType: "module" } }, // import-x { rules: { "import-x/no-dynamic-require": "warn", "import-x/no-nodejs-modules": "off" } }, // unicorn { languageOptions: { globals: globals.builtin }, plugins: { unicorn }, rules: { "unicorn/consistent-assert": "warn", "unicorn/consistent-date-clone": "warn", "unicorn/consistent-empty-array-spread": "warn", "unicorn/prefer-date-now": "warn", "unicorn/prefer-module": "warn", "unicorn/prefer-node-protocol": "warn", "unicorn/prefer-object-from-entries": "warn", "unicorn/prefer-set-size": "warn" } }, // unused-imports { plugins: { "unused-imports": unusedImports }, rules: { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": "off", "unused-imports/no-unused-imports": "error", "unused-imports/no-unused-vars": [ "warn", { vars: "all", varsIgnorePattern: "^_", args: "after-used", argsIgnorePattern: "^_", ignoreRestSiblings: true } ] } }, // package.json { ...packageJsonConfigs.recommended, rules: { "package-json/require-files": "error" } }, // prettier eslintPluginPrettierRecommended, { rules: { "prettier/prettier": [ "error", { singleQuote: true, semi: false } ] } }, ...userConfigs ); }; // src/index.ts var index_default = (options, ...userConfigs) => { return defaultConfig(options, ...userConfigs); }; export { index_default as default, defaultConfig };