You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
試しにできる限り対応してみたブランチがこちら。 @vue/eslint-config-typescript を強制インストールしているので、 npm i --force する必要があります。 eslint-plugin-storybook は無効化してあります。
後述している3件+2件で合計5件のエラーが残っている状態です。
npm run lint
path\to\voicevox\src\backend\browser\fileImpl.ts
24:7 error Expected the Promise rejection reason to be an Error @typescript-eslint/prefer-promise-reject-errors
40:9 error Expected the Promise rejection reason to be an Error @typescript-eslint/prefer-promise-reject-errors
path\to\voicevox\src\store\audio.ts
1534:17 error Expected the Promise rejection reason to be an Error @typescript-eslint/prefer-promise-reject-errors
path\to\voicevox\src\store\audioContinuousPlayer.ts
37:7 error Avoid referencing unbound methods which may cause unintentional scoping of `this`.
If your function does not access `this`, you can annotate it with `this: void`, or consider using an arrow function instead @typescript-eslint/unbound-method
37:22 error Avoid referencing unbound methods which may cause unintentional scoping of `this`.
If your function does not access `this`, you can annotate it with `this: void`, or consider using an arrow function instead @typescript-eslint/unbound-method
✖ 5 problems (5 errors, 0 warnings)
内容
現在最新のeslint@v9ではデフォルトがFlat Configになり、v10では旧コンフィグが廃止される予定のようです。
https://eslint.org/blog/2023/10/flat-config-rollout-plans/
Pros 良くなる点
ESLint Config Inspectorというツールが使えるようになり、適用されている設定の確認が非常に簡単になります。
Cons 悪くなる点
特になし?
実現方法
.eslintrc.js
を削除し、eslint.config.mjs
を作る試しにできる限り対応してみたブランチがこちら。
@vue/eslint-config-typescript
を強制インストールしているので、npm i --force
する必要があります。eslint-plugin-storybook
は無効化してあります。後述している3件+2件で合計5件のエラーが残っている状態です。
npm run lint
ルール
@typescript-eslint/ban-types
についてこのルールは廃止され、4つのルールに分割されたようです。
https://typescript-eslint.io/rules/ban-types/
no-restricted-types
no-empty-object-type
no-unsafe-function-type
no-wrapper-object-types
このルールを無効化している箇所のdisableコメントを書き換える必要があります。
これは議論の余地があるかもしれませんが、
no-empty-object-type
はoffで良いのではと思っています。ルール
@typescript-eslint/no-require-imports
についてルールの名前が変わったようです。
no-var-requires
->no-require-imports
このルールを無効化している箇所のdisableコメントを書き換える必要があります。
ルール
@typescript-eslint/prefer-promise-reject-errors
についてFlatConfigに対応したタイミングでrecommended-type-checkedにerrorとして追加されたようです。
これにより3件のエラーが検出されています。
ルール
@typescript-eslint/unbound-method
についてこちらは以前からrecommended-type-checkedにあり、旧コンフィグ時点でerrorとして設定されていたようですが、何故か検出されていませんでした。
今回、2件のエラーが新たに検出されるようになっています。
Unused eslint-disable directive
警告についてv9から、
eslint-disable
系のルール無効化コメントが不要な場合にデフォルトで警告が出るようになったようです。本来なら警告を出す方が良いと思います。
しかし、このプロジェクトには開発時はoffでproductionビルド時に警告を出すルールがあり、それを無効化するコメントが入っています。(no-console等)
このルールが開発時に不要だとして警告を出し続けてしまうため、切っておく方が良さそうです。
現状の問題点
v9に正式対応していないプラグインがそこそこあります。
@vue/eslint-config-prettier
Eslint 9.0 released and the flat configuration format vuejs/eslint-config-prettier#19@vue/eslint-config-typescript
Support ESLintv9
vuejs/eslint-config-typescript#76一応、
--force
で強制インストールすればFlatCompatで動きました。eslint-plugin-import
Support eslint v9 import-js/eslint-plugin-import#2948eslint-plugin-storybook
Suport ESLint v9 storybookjs/eslint-plugin-storybook#157VOICEVOXのバージョン
0.?.0
OSの種類/ディストリ/バージョン
その他
長々と書きましたが、結論は「FlatConfig未対応プラグインが対応するまで移行不可」です。
The text was updated successfully, but these errors were encountered: