Skip to content

Commit

Permalink
fix: allow adjusting the print width and have tailwind config use sty…
Browse files Browse the repository at this point in the history
…listic settings
  • Loading branch information
RebeccaStevens committed Aug 11, 2024
1 parent 610b530 commit 3bb9d9c
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 13 deletions.
8 changes: 8 additions & 0 deletions scripts/typegen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,19 @@ const configs = (await combine(
jsx: true,
quotes: "double",
semi: true,
printWidth: 120,
},
overrides: undefined,
typescript: false
}),
tailwind({
stylistic: {
indent: 2,
jsx: true,
quotes: "double",
semi: true,
printWidth: 120,
},
overrides: undefined,
}),
test({
Expand Down
4 changes: 2 additions & 2 deletions src/configs/formatters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ export async function formatters(
throw new Error("`slidev` option only works when `markdown` is enabled with `prettier`");
}

const { indent, quotes, semi } = stylistic;
const { indent, printWidth, quotes, semi } = stylistic;

const prettierOptions: PrettierOptions = Object.assign(
{
endOfLine: "lf",
printWidth: 120,
printWidth: printWidth ?? 120,
semi: semi ?? true,
singleQuote: quotes === "single",
tabWidth: typeof indent === "number" ? indent : 2,
Expand Down
1 change: 1 addition & 0 deletions src/configs/stylistic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const StylisticConfigDefaults: Required<StylisticConfig> = {
jsx: true,
quotes: "double",
semi: true,
printWidth: 120,
};

export async function stylistic(
Expand Down
34 changes: 24 additions & 10 deletions src/configs/tailwind.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import type { ESLint } from "eslint";

import type { FlatConfigItem, OptionsTailwindCSS } from "../types";
import type { FlatConfigItem, OptionsTailwindCSS, RequiredOptionsStylistic } from "../types";
import { loadPackages } from "../utils";

export async function tailwind(options: Readonly<Required<OptionsTailwindCSS>>): Promise<FlatConfigItem[]> {
const { overrides } = options;
export async function tailwind(
options: Readonly<Required<OptionsTailwindCSS> & RequiredOptionsStylistic>,
): Promise<FlatConfigItem[]> {
const { overrides, stylistic } = options;

const [pluginTailwindCSS, pluginReadableTailwind] = (await loadPackages([
"eslint-plugin-tailwindcss",
Expand All @@ -19,16 +21,28 @@ export async function tailwind(options: Readonly<Required<OptionsTailwindCSS>>):
"tailwindcss-readable": pluginReadableTailwind,
},
rules: {
"tailwindcss/classnames-order": "warn",
"tailwindcss/enforces-negative-arbitrary-values": "warn",
"tailwindcss/enforces-shorthand": "warn",
"tailwindcss/no-contradicting-classname": "error",
"tailwindcss/no-arbitrary-value": "off",
"tailwindcss/no-custom-classname": "off",
"tailwindcss/no-contradicting-classname": "error",
"tailwindcss/no-unnecessary-arbitrary-value": "warn",

"tailwindcss-readable/multiline": "warn",
"tailwindcss-readable/no-unnecessary-whitespace": "warn",
...(stylistic === false
? {}
: {
"tailwindcss/classnames-order": "warn",
"tailwindcss/enforces-negative-arbitrary-values": "warn",
"tailwindcss/enforces-shorthand": "warn",
"tailwindcss/no-unnecessary-arbitrary-value": "warn",

"tailwindcss-readable/multiline": [
"warn",
{
group: "newLine",
indent: stylistic.indent,
printWidth: stylistic.printWidth,
},
],
"tailwindcss-readable/no-unnecessary-whitespace": "warn",
}),

...overrides,
},
Expand Down
1 change: 1 addition & 0 deletions src/factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ export async function rsEslint(
if (tailwindOptions !== false) {
m_configs.push(
tailwind({
stylistic: stylisticOptions,
overrides: getOverrides(options, "tailwind"),
}),
);
Expand Down
4 changes: 3 additions & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,9 @@ export type RequiredOptionsStylistic = {
stylistic: Required<StylisticConfig> | false;
};

export type StylisticConfig = {} & Pick<StylisticCustomizeOptions, "indent" | "quotes" | "jsx" | "semi">;
export type StylisticConfig = {
printWidth?: number;
} & Pick<StylisticCustomizeOptions, "indent" | "quotes" | "jsx" | "semi">;

export type OptionsOverrides = {
overrides?: FlatConfigItem["rules"];
Expand Down

0 comments on commit 3bb9d9c

Please sign in to comment.