コミット前に Lint を強制するなら lint-staged が便利

  • 32
    いいね
  • 0
    コメント

lint-staged_2017-04-30.gif

前提

  • Git
  • Node.js & npm
  • ESLint などの Lint ツール

目的

lint-staged を使うと、簡単にコミット前のファイルの Lint を強制できる。

.git/hooks/pre-commit ファイルに直接書いても良いが、 pre-commit などのツールと連携させることで、package.json に設定を一元化できる。

方法

私のおススメは ESLintstylelint を使った :point_down: の設定。

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