前提
- Git
- Node.js & npm
- ESLint などの Lint ツール
目的
lint-staged を使うと、簡単にコミット前のファイルの Lint を強制できる。
.git/hooks/pre-commit ファイルに直接書いても良いが、 pre-commit などのツールと連携させることで、package.json に設定を一元化できる。
方法
私のおススメは ESLint と stylelint を使った
の設定。
$ npm install --save-dev eslint stylelint pre-commit lint-staged
package.json
{
"scripts": {
"lint-staged": "lint-staged"
},
"pre-commit": [
"lint-staged"
],
"lint-staged": {
"*.{js,jsx}": ["eslint"],
"*.{css,scss}": ["stylelint"]
}
}
ちなみに lint-staged の README には、強制的にファイルを編集してコミットしてしまう方法も載っている。
package.json
{
"lint-staged": {
"*.js": ["eslint --fix", "git add"]
}
}
pre-commit の代わりに husky を使う
(2017-04-30 追記)
lint-stated@3.4 では pre-commit の代わりに husky を使う方法が推奨されていた。
package.json
{
"scripts": {
"precommit": "lint-staged"
},
"lint-staged": {
"*.js": ["eslint --fix", "git add"]
}
}
husky の方は scripts に記述できるので、以下のように npm run で確認できることがメリット。
$ npm run precommit
ただ pre-commit のように、コマンドを配列で指定はできない。
