eslint.config.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import js from "@eslint/js";
  2. import eslintParserTypeScript from "@typescript-eslint/parser";
  3. import type { Linter } from "eslint";
  4. import eslintPluginBetterTailwindcss from "eslint-plugin-better-tailwindcss";
  5. import simpleImportSortPlugin from "eslint-plugin-simple-import-sort";
  6. import globals from "globals";
  7. import tseslint from "typescript-eslint";
  8. export default [
  9. js.configs.recommended,
  10. ...tseslint.configs.recommended,
  11. // ...tailwind.configs["flat/recommended"],
  12. {
  13. plugins: {
  14. "simple-import-sort": simpleImportSortPlugin,
  15. "better-tailwindcss": eslintPluginBetterTailwindcss,
  16. },
  17. ignores: ["**/node_modules/**"],
  18. languageOptions: {
  19. parser: eslintParserTypeScript,
  20. parserOptions: {
  21. project: true,
  22. ecmaFeatures: {
  23. jsx: true,
  24. },
  25. },
  26. globals: {
  27. ...globals.node,
  28. ...globals.browser,
  29. },
  30. },
  31. files: ["**/*.{js,mjs,cjs,jsx,tsx,ts}"],
  32. settings: {
  33. "better-tailwindcss": {
  34. entryPoint: "src/main.css",
  35. },
  36. },
  37. rules: {
  38. ...(eslintPluginBetterTailwindcss.configs["recommended-warn"] ?? {}).rules,
  39. ...(eslintPluginBetterTailwindcss.configs["stylistic-warn"] ?? {}).rules,
  40. // "tailwindcss/classnames-order": "off",
  41. "better-tailwindcss/multiline": [
  42. "warn",
  43. {
  44. group: "newLine",
  45. printWidth: 100,
  46. },
  47. ],
  48. "better-tailwindcss/no-unregistered-classes": [
  49. "warn",
  50. {
  51. ignore: [
  52. "^group(?:\\/(\\S*))?$",
  53. "^peer(?:\\/(\\S*))?$",
  54. "select_container",
  55. "convert_to_popup",
  56. "convert_to_group",
  57. "target",
  58. "convert_to_target",
  59. "job-details-toggle",
  60. ],
  61. },
  62. ],
  63. },
  64. },
  65. ] as Linter.Config[];