前提
- 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
のように、コマンドを配列で指定はできない。