いろいろ調べてて疲れたので、とりあえず結論だけまとめる
方針
色々あるけど、以下の方針が良さそう。
- いけてる整形ツールのPrettierでコードフォーマットをしつつ、構文チェックもしたいのでES Lint内でチェックする
cf. Prettier 入門 ~ESLintとの違いを理解して併用する~ - Qiita - VSCodeでも実行できるようにする
入れるものは以下
- ES Lint (lintツール)
- Prettier (コード整形ツール)
- ES Lintのコード整形ルールを全て無効にする
- PrettierをES Lint内で実行できるようにする
- React用のES Lint
- Babelを使っている際のLint用のパーサー
- gitのcommit時等に処理をhookできるようにする
- commit時の処理の際にgitにstagingされたものだけをlintする
npm install --save-dev eslint prettier eslint-config-prettier eslint-plugin-prettier eslint-plugin-react husky lint-staged
設定
以下を既存の{}
の中に追加
package.json
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,jsx}": ["eslint --fix", "git add"]
},
.eslintrc.js
{
"env": {
"es6": true,
"node": true
},
"parser": "babel-eslint",
"plugins": [
"react",
"prettier"
],
"parserOptions": {
"version": 2018,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:prettier/recommended",
"prettier/react"
],
"rules": {
"prettier/prettier": "error"
}
}
prettierの設定は.eslintrc.js
にかいたplugin:prettier/recommended
のおかげで.prettierrc
も呼んでくれるようになっているので全てここでする。中身はここに書いてるのはあくまで参考なのでお好きに。
.prettierrc
{
"printWidth": 120,
"useTabs": false,
"semi": true,
"singleQuote": false,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxBracketSameLine": false
}
VS Codeの設定
- ESLintエクステンションをインストール
- その上で以下の設定をし、Save時に走らせる
{
"javascript.format.enable": false,
"eslint.autoFixOnSave": true
}
わかっているDeprecated情報
いくつかのソースを調べていた時に書き方が分かれていて混乱したので。どちらがいいかわかったものは書いておく
-
.eslintrc
ではなく、.eslintrc.js
やeslintrc.json
を使おう。jsとjsonどちらがいいかは不明。jsの方が上にあったので迷ったらjsでよさそう。 - huskyは以前は
package.json
のscripts
のprecommit
に書けば走ったがそうではなくなった。
{
"scripts": {
- "precommit": "npm test",
- "commitmsg": "commitlint -E GIT_PARAMS"
},
+ "husky": {
+ "hooks": {
+ "pre-commit": "npm test",
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
+ }
+ }
}