UNPKG

@shayanthenerd/eslint-config

Version:

A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style

42 lines (40 loc) 1.78 kB
import { globs } from "../utils/globs.js"; import { isEnabled } from "../utils/isEnabled.js"; import { defaultOptions } from "../utils/options/defaultOptions.js"; import { getTailwindRules } from "../rules/tailwind.js"; import path from "node:path"; import { mergeConfigs } from "eslint-flat-config-utils"; import eslintPluginVue from "eslint-plugin-vue"; import eslintPluginHTML from "@html-eslint/eslint-plugin"; import eslintPluginTailwind from "eslint-plugin-better-tailwindcss"; //#region src/configs/tailwind.ts const eslintParserHTML = eslintPluginHTML.configs["flat/recommended"].languageOptions.parser; const eslintParserVue = eslintPluginVue.configs["flat/recommended"].find((config) => config.name === "vue/base/setup-for-vue")?.languageOptions?.parser; function getTailwindConfig(options) { const { tsConfig, configs: { vue, html, tailwind } } = options; const { config, entryPoint, overrides } = isEnabled(tailwind) ? tailwind : defaultOptions.configs.tailwind; const tailwindConfig = { name: "shayanthenerd/tailwind", files: [ globs.src, html ? globs.html : "", vue ? globs.vue : "" ], plugins: { "better-tailwindcss": eslintPluginTailwind }, languageOptions: { parserOptions: { parser: html ? eslintParserHTML : eslintParserVue } }, settings: { "better-tailwindcss": { entryPoint, tailwindConfig: config, tsconfig: tsConfig ? path.resolve(tsConfig.rootDir, tsConfig.filename) : void 0, attributes: [["^v-bind:ui$", [{ match: "objectValues" }]], ["^(?:v-bind:)?(class|activeClass|inactiveClass)$", [ { match: "strings" }, { match: "objectKeys" }, { match: "objectValues" } ]]] } }, rules: getTailwindRules(options) }; return mergeConfigs(tailwindConfig, overrides); } //#endregion export { getTailwindConfig };