これは何?
javascriptのコードが解析されていい感じに整形されるようにします。
- リンター(解析): ESLint
- フォーマッター(整形): prettier
ESLint
npm init @eslint/config
インストールすると、設定に関する質問がいくつかあるのでそれに答えます。
style guide
はAirbnb
が1番人気のようです。
Airbnb
の設定は日本語にも訳されていて、わかりやすいと思います。
↓ Google
、Airbnb
、Standard
の大まかな違いは以下の記事にまとめられています。
.eslintrc
がjs
もしくはjson
もしくはyml
で作成されるので、そこで自分好みの設定をすることができます。
"off" or 0 - turn the rule off
"warn" or 1 - turn the rule on as a warning (doesn’t affect exit code)
"error" or 2 - turn the rule on as an error (exit code will be 1)
-
"off"
=> 指定したルールは無視される -
"warn"
ルールに反している場合,注意をされる -
"error"
ルールに反している場合、ガチギレされる
"rules": {
"no-unused-vars": "off",
"indent": ["warn", 2],
"semi": "error",
}
例えば上記のように設定した場合、使われていない変数があっても警告は表示されない
、インデントが2出なかった場合、注意をされる
、セミコロンがなかった場合、ガチギレされる
になります。
※ 設定できるruleの一覧
設定時にstyle guide
を選んだ場合は、デフォルトでそのstyle guide
のruleが適用されていて、.eslintrc
でオーバーライドする形になります。
以下のコマンドでリンターを走らせることができます。
npx eslint 解析したいファイルまたはディレクトリ
prettier
ESLintでコードを解析して、prettierでコードをよりprettyにする(整形する)ことができます。
npm install --save-dev --save-exact prettier
echo {}> .prettierrc.json
.prettierrc.json
にprettierの設定を書きます。
{
"singleQuote": true,
"semi": false
}
例えば上記のように設定すると、ダブルクォートがシングルクォートに変換
され、末尾のセミコロンがある場合は削除
されます。
※ 追加できるオプション
以下のコマンドでprettierを走らせることができます。
npx prettier --write 対象のファイルまたはディレクトリ
対象外にしたいファイルやディレクトリがある場合は.prettierignore
を作成し、追加することで対象外にできます。
ESLintとprettierを同時に使う
package.json
にESLint
で解析するのと同時にprettier
で整形できるようにコマンドを設定します。
"scripts": {
"clean": "npx prettier --write src && npx eslint --fix src"
}
上記のように設定すると、npm run clean
によってESLint
とprettier
が走るようになります。
ESLint
側とprettier側
で設定が違うとコンフリクトしてしまうので、擦り合わせをする必要があります。
↑ どちらもconflictするruleをESLint側でoffにするものなのでどちらを使ってもいいと思います。
eslint-config-prettier
を使ってみます。
npm install --save-dev eslint-config-prettier
{
"extends": [
"some-other-config-you-use",
"prettier" // <= 追加
]
}
conflictがあるかどうかの確認は以下のコマンド(ディレクトリではなくファイル指定)
npx eslint-config-prettier 対象のファイル
- conflictがあった場合
The following rules are unnecessary or might conflict with Prettier:
- indent
- conflictがなかった場合
No rules that are unnecessary or conflict with Prettier were found.