@geckou/eslint-config
v0.4.0
Published
Shared ESLint flat config for geckou projects (base / next / expo / vue / react)
Downloads
269
Readme
@geckou/eslint-config
geckou のプロジェクト共通の ESLint 設定(flat config)。各プロジェクトは参照 1 行だけを持ち、 ルール本体はこのパッケージが持つ。
インストール
yarn add -D @geckou/eslint-config eslinteslint は peerDependency。プラグイン類はこのパッケージが依存として持つので、個別に入れる必要はない。
使い方
プリセットは 5 つ。重ねて使わない(それぞれ単独で完結する。重ねると同じプラグインを
別々の実体で登録することになり、ESLint が Cannot redefine plugin で落ちる)。
| サブパス | 対象 |
| --- | --- |
| . | TypeScript パッケージ(Cloud Functions・共有パッケージ等) |
| ./next | Next.js アプリ |
| ./expo | Expo アプリ |
| ./vue | Vue 3 パッケージ |
| ./react | React パッケージ(Next.js を使わないコンポーネントライブラリ等) |
// eslint.config.mjs(TypeScript パッケージ)
import geckou from '@geckou/eslint-config'
export default geckou// apps/web/eslint.config.mjs
import next from '@geckou/eslint-config/next'
export default next// apps/mobile/eslint.config.mjs
import expo from '@geckou/eslint-config/expo'
export default expo// Vue パッケージの eslint.config.mjs
import vue from '@geckou/eslint-config/vue'
export default vueVue と React が同居するリポジトリでは、それぞれのディレクトリに絞って並べる。 対象が重なると同じファイルに 2 つのプリセットが当たる。
// リポジトリ直下の eslint.config.mjs
import react from '@geckou/eslint-config/react'
import vue from '@geckou/eslint-config/vue'
export default [
...vue.map((config) => ({ ...config, files: ['packages/vue/**/*.{vue,ts}'] })),
...react.map((config) => ({ ...config, files: ['packages/react/**/*.{ts,tsx}'] })),
]方針
- ESLint 本体の推奨(
eslint:recommended)を含む。 typescript-eslint のrecommendedは これを含まないため、各プリセットで明示的に足している(no-useless-escape/no-empty/no-fallthroughなど)。no-undefは TypeScript が見るので.ts/.tsx/.vueでは無効 - フォーマット系のルールは持たない。 Prettier に委譲する(
eslint-config-prettierで無効化済み)。 フォーマットは@geckou/prettier-configを使う - 共通の値(無視するパス・共有ルール)は
rules.jsに置き、各プリセットから参照する。rules.jsはプラグインを読み込まないので、どのプリセットから参照しても多重定義にならない
ルールを変えるときは geckou/project-starter の
packages/eslint-config/ を直す。
