create-react-app で eslint のルールを変える
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ package.json の eslintConfig に rules を追加する
react-scripts を直接使うだけなら eslint の処理が入ってませんが create-react-app を使って作ると eslint のチェックが入ります
この eslint は要らない情報が多すぎて邪魔なので devtools の console で表示レベルを設定して非表示にしてるのですが これをすると必要なエラーまで表示されずに困る事がありました
非表示にしてるくらいで そもそもなくてもいいものなのですが build 時には流し見してまれに意図しないものを見つけることもあるので助かることもあります
動作確認はしてるので動作には問題はないのですが 気づいたら直しておきたい程度のものですけど
これまでデフォルトのままで放置でしたが そろそろちゃんと必要なものといらないものを分けようと思います
まず 設定ファイルが見当たらないのにどうして create-react-app で作ると eslint が有効になってるのかがわからなかったので 探してみると package.json 中に eslintConfig というそれっぽい項目がありました
https://github.com/facebook/create-react-app/blob/v4.0.3/packages/cra-template/template.json
react-app というルールをデフォルトで使ってるようです
react-app/jest もありますが jest なのでこれはテスト用でしょう
react-app のルールはここにあります
https://github.com/facebook/create-react-app/blob/v4.0.3/packages/eslint-config-react-app/index.js
結構多いのでこれを見ていくというより 出てきた警告やエラーで不要ならオフにしていくほうが楽そうです
変更するには eslintConfig.rules に eslint のルールを追加します
自分で書いたほうが優先されるので off で上書きできます
switch の default を省略した場合や export default に式を書いた場合の警告は不要なので無効にするという場合はこういう感じです
この eslint は要らない情報が多すぎて邪魔なので devtools の console で表示レベルを設定して非表示にしてるのですが これをすると必要なエラーまで表示されずに困る事がありました
非表示にしてるくらいで そもそもなくてもいいものなのですが build 時には流し見してまれに意図しないものを見つけることもあるので助かることもあります
動作確認はしてるので動作には問題はないのですが 気づいたら直しておきたい程度のものですけど
これまでデフォルトのままで放置でしたが そろそろちゃんと必要なものといらないものを分けようと思います
まず 設定ファイルが見当たらないのにどうして create-react-app で作ると eslint が有効になってるのかがわからなかったので 探してみると package.json 中に eslintConfig というそれっぽい項目がありました
https://github.com/facebook/create-react-app/blob/v4.0.3/packages/cra-template/template.json
react-app というルールをデフォルトで使ってるようです
react-app/jest もありますが jest なのでこれはテスト用でしょう
react-app のルールはここにあります
https://github.com/facebook/create-react-app/blob/v4.0.3/packages/eslint-config-react-app/index.js
結構多いのでこれを見ていくというより 出てきた警告やエラーで不要ならオフにしていくほうが楽そうです
変更するには eslintConfig.rules に eslint のルールを追加します
自分で書いたほうが優先されるので off で上書きできます
switch の default を省略した場合や export default に式を書いた場合の警告は不要なので無効にするという場合はこういう感じです
eslintConfig: {
"extends": ["react-app", "react-app/jest"],
"rules": {
"default-case": "off",
"import/no-anonymous-default-export": "off"
}
}