Skip to content

Commit

Permalink
Merge pull request #133 from hatena/prepare-for-v3
Browse files Browse the repository at this point in the history
v3 リリース準備
  • Loading branch information
susisu authored Sep 5, 2024
2 parents 37cdb8a + 650f9f0 commit d221276
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 102 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
node-version:
- '18'
- '20'
- '21'
- '22'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ URL 指定でインストールする方法と、GitHub Packages Registry から
- `npm update` で更新できない

```bash
npm i -D https://github.com/hatena/eslint-config-hatena.git#v2.1.1
npm i -D https://github.com/hatena/eslint-config-hatena.git#v3.0.0
```

### GitHub Packages Registry からインストールする
Expand Down
196 changes: 98 additions & 98 deletions docs/usage.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,103 @@
# 使い方

## `eslint.config.js` (Flat Config) を使う場合

Flat Config に対しては `@hatena/eslint-config-hatena/flat` から設定を作成するためのビルダー関数を提供しています。

最も簡単な利用方法は以下のようになります。

```javascript
import config from '@hatena/eslint-config-hatena/flat';

export default config();
```

これは `.eslintrc` での以下の設定に相当します。

```javascript
module.exports = {
root: true,
extends: ['@hatena/hatena', '@hatena/hatena/+typescript', '@hatena/hatena/+prettier'],
};
```

### TypeScript

TypeScript に関連した設定はデフォルトで有効になっているため、特別に設定を追加する必要はありません。TypeScript の設定ファイルはデフォルトでは `./tsconfig.json` が使われます。

ESLint を実行するディレクトリが `tsconfig.json` が配置されているディレクトリと異なり、うまく `tsconfig.json` を解決できない場合は、`tsconfigRootDir` を指定してください。

```javascript
export default config({
tsconfigRootDir: import.meta.dirname,
});
```

参照する TypeScript の設定ファイルを変更する場合は `tsProject` オプションを使用してください。ただし、この設定をすると ESLint 以外のツールとの間で型情報の不一致が生まれる可能性があるため、非推奨です。

```javascript
export default config({
tsProject: './tsconfig.lint.json',
});
```

typescript-eslint v8 から追加された [`projectService` オプション](https://typescript-eslint.io/packages/parser#projectservice)は、現在オプトインとして提供しています。使用する場合は `tsProjectService` を有効にしてください (`tsProject` よりも優先されます)。

```javascript
export default config({
tsProjectService: true,
tsconfigRootDir: import.meta.dirname,
});
```

### React

React に関連した設定やルールを有効化するには、`react` オプションを有効化してください。

```javascript
export default config({
react: true,
});
```

### Prettier

デフォルトでは Prettier を併用することを想定して、Prettier と衝突するフォーマットに関するルールを全て無効化するようになっています。

Prettier を使用せず、ESLint を使ってフォーマットを行いたい場合は、`prettier` オプションを無効化した上でフォーマットに関するルールを有効化してください。

```javascript
export default config({
prettier: false,
});
```

### カスタム設定

ビルダー関数の第二引数には、カスタム設定の配列を与えることができます。プロジェクト固有の設定はここに追加するのがおすすめです。
[typescript-eslint のユーティリティ](https://typescript-eslint.io/packages/typescript-eslint#config)をラップしているため、`extends` が利用できます。

```javascript
import config from '@hatena/eslint-config-hatena/flat';
import globals from 'globals';

export default config({}, [
{
files: ['src/**/*.js'],
extends: [somePlugin.recommended],
languageOptions: {
globals: {
...globals.es2021,
...globals.browser,
},
},
rules: {
'no-console': 0,
},
},
]);
```

## `.eslintrc` を使う場合

- このライブラリでは `@hatena/hatena/+typescript``@hatena/hatena/+react` など複数の config を提供しています
Expand Down Expand Up @@ -116,101 +214,3 @@ React を利用しているプロジェクト向けの config です。
![required no](https://img.shields.io/badge/required-no-inactive) [![see source](https://img.shields.io/badge/see-source-yellow)](https://github.com/hatena/eslint-config-hatena/blob/main/lib/classic/prettier.js)

prettier を利用しているプロジェクト向けの config です。

## `eslint.config.js` (Flat Config) を使う場合

Flat Config に対しては `@hatena/eslint-config-hatena/flat` から設定を作成するためのビルダー関数を提供しています。

最も簡単な利用方法は以下のようになります。

```javascript
import config from '@hatena/eslint-config-hatena/flat';

export default config();
```

これは `.eslintrc` での以下の設定に相当します。

```javascript
module.exports = {
root: true,
extends: ['@hatena/hatena', '@hatena/hatena/+typescript', '@hatena/hatena/+prettier'],
};
```

### TypeScript

TypeScript に関連した設定はデフォルトで有効になっているため、特別に設定を追加する必要はありません。TypeScript の設定ファイルはデフォルトでは `./tsconfig.json` が使われます。

ESLint を実行するディレクトリが `tsconfig.json` が配置されているディレクトリと異なり、うまく `tsconfig.json` を解決できない場合は、`tsconfigRootDir` を指定してください。

```javascript
export default config({
tsconfigRootDir: import.meta.dirname,
});
```

参照する TypeScript の設定ファイルを変更する場合は `tsProject` オプションを使用してください。ただし、この設定をすると ESLint 以外のツールとの間で型情報の不一致が生まれる可能性があるため、非推奨です。

```javascript
export default config({
tsProject: './tsconfig.lint.json',
});
```

typescript-eslint v8 から追加された [`projectService` オプション](https://typescript-eslint.io/packages/parser#projectservice)は、現在オプトインとして提供しています。使用する場合は `tsProjectService` を有効にしてください (`tsProject` よりも優先されます)。

```javascript
export default config({
tsProjectService: true,
tsconfigRootDir: import.meta.dirname,
});
```

### React

React に関連した設定やルールを有効化するには、`react` オプションを有効化してください。

```javascript
export default config({
react: true,
});
```

### Prettier

デフォルトでは Prettier を併用することを想定して、Prettier と衝突するフォーマットに関するルールを全て無効化するようになっています。

Prettier を使用せず、ESLint を使ってフォーマットを行いたい場合は、`prettier` オプションを無効化した上でフォーマットに関するルールを有効化してください。

```javascript
export default config({
prettier: false,
});
```

### カスタム設定

ビルダー関数の第二引数には、カスタム設定の配列を与えることができます。プロジェクト固有の設定はここに追加するのがおすすめです。
[typescript-eslint のユーティリティ](https://typescript-eslint.io/packages/typescript-eslint#config)をラップしているため、`extends` が利用できます。

```javascript
import config from '@hatena/eslint-config-hatena/flat';
import globals from 'globals';

export default config({}, [
{
files: ['src/**/*.js'],
extends: [somePlugin.recommended],
languageOptions: {
globals: {
...globals.es2021,
...globals.browser,
},
},
rules: {
'no-console': 0,
},
},
]);
```
1 change: 0 additions & 1 deletion lib/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ declare module 'eslint-plugin-react' {
'recommended': {
rules: Linter.RulesRecord;
};
// eslint-disable-next-line @typescript-eslint/naming-convention
'jsx-runtime': {
rules: Linter.RulesRecord;
};
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hatena/eslint-config-hatena",
"version": "2.1.1",
"version": "3.0.0",
"description": "ESLint config for @hatena",
"repository": "https://github.com/hatena/eslint-config-hatena",
"license": "MIT",
Expand Down

0 comments on commit d221276

Please sign in to comment.