diff --git a/.changeset/clever-planets-itch.md b/.changeset/clever-planets-itch.md new file mode 100644 index 00000000..c89b1758 --- /dev/null +++ b/.changeset/clever-planets-itch.md @@ -0,0 +1,5 @@ +--- +"@virtual-live-lab/eslint-config": patch +--- + +refator package structure diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index d6a0285c..890744cd 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -10,25 +10,13 @@ "import": "./dist/index.mjs", "types": "./dist/index.d.mts" }, - "./js": { - "import": "./dist/js.mjs", - "types": "./dist/js.d.mts" + "./preset/*": { + "import": "./dist/preset/*.mjs", + "types": "./dist/preset/*.d.mts" }, - "./ts": { - "import": "./dist/ts.mjs", - "types": "./dist/ts.d.mts" - }, - "./astro": { - "import": "./dist/astro.mjs", - "types": "./dist/astro.d.mts" - }, - "./react": { - "import": "./dist/react.mjs", - "types": "./dist/react.d.mts" - }, - "./addons/*": { - "import": "./dist/addons/*.mjs", - "types": "./dist/addons/*.d.mts" + "./addon/*": { + "import": "./dist/addon/*.mjs", + "types": "./dist/addon/*.d.mts" } }, "files": [ diff --git a/packages/eslint-config/src/bases/astro.ts b/packages/eslint-config/src/base/astro.ts similarity index 100% rename from packages/eslint-config/src/bases/astro.ts rename to packages/eslint-config/src/base/astro.ts diff --git a/packages/eslint-config/src/bases/js.ts b/packages/eslint-config/src/base/js.ts similarity index 100% rename from packages/eslint-config/src/bases/js.ts rename to packages/eslint-config/src/base/js.ts diff --git a/packages/eslint-config/src/base/nextjs.ts b/packages/eslint-config/src/base/nextjs.ts new file mode 100644 index 00000000..a42b8ffb --- /dev/null +++ b/packages/eslint-config/src/base/nextjs.ts @@ -0,0 +1,11 @@ +import type { Linter } from "eslint" + +import { compat } from "../lib/compat" +import { reactConfig } from "./react" + +const nextJsConfig: Linter.FlatConfig[] = [ + ...reactConfig, + ...compat.extends("next/core-web-vitals"), +] + +export { nextJsConfig } diff --git a/packages/eslint-config/src/bases/react.ts b/packages/eslint-config/src/base/react.ts similarity index 100% rename from packages/eslint-config/src/bases/react.ts rename to packages/eslint-config/src/base/react.ts diff --git a/packages/eslint-config/src/bases/stylistic.ts b/packages/eslint-config/src/base/stylistic.ts similarity index 100% rename from packages/eslint-config/src/bases/stylistic.ts rename to packages/eslint-config/src/base/stylistic.ts diff --git a/packages/eslint-config/src/bases/typescript.ts b/packages/eslint-config/src/base/typescript.ts similarity index 100% rename from packages/eslint-config/src/bases/typescript.ts rename to packages/eslint-config/src/base/typescript.ts diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index a24808a6..7f4998c5 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -1,4 +1 @@ -export { default as astro } from "./astro" -export { default as js } from "./js" -export { default as react } from "./react" -export { default as ts } from "./ts" +export { compat } from "./lib/compat" diff --git a/packages/eslint-config/src/js.ts b/packages/eslint-config/src/js.ts deleted file mode 100644 index 67e26693..00000000 --- a/packages/eslint-config/src/js.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { jsConfig } from "./bases/js" -import { stylisticConfig } from "./bases/stylistic" - -const js = [...jsConfig, ...stylisticConfig] - -export default js diff --git a/packages/eslint-config/src/astro.ts b/packages/eslint-config/src/presets/astro.ts similarity index 74% rename from packages/eslint-config/src/astro.ts rename to packages/eslint-config/src/presets/astro.ts index 5c1c687b..1f82e47e 100644 --- a/packages/eslint-config/src/astro.ts +++ b/packages/eslint-config/src/presets/astro.ts @@ -2,8 +2,8 @@ import type { TSESLint } from "@typescript-eslint/utils" import tseslint from "typescript-eslint" -import { astroConfig } from "./bases/astro" -import { reactConfig } from "./bases/react" +import { astroConfig } from "../base/astro" +import { reactConfig } from "../base/react" import ts from "./ts" const astro: TSESLint.FlatConfig.ConfigArray = tseslint.config( diff --git a/packages/eslint-config/src/presets/index.ts b/packages/eslint-config/src/presets/index.ts new file mode 100644 index 00000000..7d6b9df5 --- /dev/null +++ b/packages/eslint-config/src/presets/index.ts @@ -0,0 +1,13 @@ +import astro from "./astro" +import js from "./js" +import react from "./react" +import ts from "./ts" + +const presets = { + astro, + js, + react, + ts, +} + +export default presets diff --git a/packages/eslint-config/src/presets/js.ts b/packages/eslint-config/src/presets/js.ts new file mode 100644 index 00000000..a55d8a5a --- /dev/null +++ b/packages/eslint-config/src/presets/js.ts @@ -0,0 +1,6 @@ +import { jsConfig } from "../base/js" +import { stylisticConfig } from "../base/stylistic" + +const js = [...jsConfig, ...stylisticConfig] + +export default js diff --git a/packages/eslint-config/src/presets/nextjs.ts b/packages/eslint-config/src/presets/nextjs.ts new file mode 100644 index 00000000..ae18f35e --- /dev/null +++ b/packages/eslint-config/src/presets/nextjs.ts @@ -0,0 +1,13 @@ +import type { TSESLint } from "@typescript-eslint/utils" + +import tseslint from "typescript-eslint" + +import { nextJsConfig } from "../base/nextjs" +import ts from "./ts" + +const react: TSESLint.FlatConfig.ConfigArray = tseslint.config( + ...ts, + ...nextJsConfig, +) + +export default react diff --git a/packages/eslint-config/src/react.ts b/packages/eslint-config/src/presets/react.ts similarity index 84% rename from packages/eslint-config/src/react.ts rename to packages/eslint-config/src/presets/react.ts index a75cc9f2..cf33ae93 100644 --- a/packages/eslint-config/src/react.ts +++ b/packages/eslint-config/src/presets/react.ts @@ -2,7 +2,7 @@ import type { TSESLint } from "@typescript-eslint/utils" import tseslint from "typescript-eslint" -import { reactConfig } from "./bases/react" +import { reactConfig } from "../base/react" import ts from "./ts" const react: TSESLint.FlatConfig.ConfigArray = tseslint.config( diff --git a/packages/eslint-config/src/ts.ts b/packages/eslint-config/src/presets/ts.ts similarity index 86% rename from packages/eslint-config/src/ts.ts rename to packages/eslint-config/src/presets/ts.ts index f636a24a..d3ff5c8a 100644 --- a/packages/eslint-config/src/ts.ts +++ b/packages/eslint-config/src/presets/ts.ts @@ -2,7 +2,7 @@ import type { TSESLint } from "@typescript-eslint/utils" import tseslint from "typescript-eslint" -import { tsConfig } from "./bases/typescript" +import { tsConfig } from "../base/typescript" import js from "./js" // eslint-disable-next-line @typescript-eslint/no-unsafe-argument diff --git a/packages/eslint-config/tsup.config.ts b/packages/eslint-config/tsup.config.ts index 62435ed1..36042fc1 100644 --- a/packages/eslint-config/tsup.config.ts +++ b/packages/eslint-config/tsup.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "tsup" export default defineConfig({ clean: true, // build前にディレクトリ内を削除するか - entry: ["./src/*.ts", "./src/addons/*.ts"], // バンドルするファイルを指定 + entry: ["./src/*.ts", "./src/presets/*.ts", "./src/addons/*.ts"], // バンドルするファイルを指定 experimentalDts: true, format: ["esm"], // 出力する形式を指定 minify: process.env.NODE_ENV === "production",