LoginSignup
122
88

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-10-01

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

122
88
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
122
88