fnwiya's quine

自分自身を出力するブログ

pre-commitでeslintを走らせてコードを綺麗にしていく

linterがあるとコーディングスタイルが統一され無駄なdiffやバグの防止ができますが、 既存のアプリにあとから導入しようと思うといきなり大量のエラーがでてきて萎えてしまいます。 そこで自分が編集したファイルだけlintを実行して少しずつ直していくというのはどうでしょう。

www.npmjs.com

下記の例のようなpackage.jsonをプロジェクトルートに作り、

$ npm install

をするだけで設定は完了です。

設定をした上でgitでcommitしようとすると、 変更があったファイルに対してのみlintが実行され、 lintに失敗するとcommitがコケるようになります。 (どうしてもlinterを無視してコミットしたい場合はgit commit --no-verifyとします。)

ちなみにコミットする前に手動でlinterを走らせたい場合は

$ npm run lint:commit

とします。

Boy Scout Ruleで少しずつコードを綺麗にしていきましょう!

package.jsonの例

{
  "name": "sample",
  "version": "1.0.0",
  "description": "sample",
  "repository": {
    "type": "git",
    "url": "http://gitlab.fdev/sample/sample.git"
  },
  "pre-commit": [
    "precommit-msg",
    "lint:commit"
  ],
  "scripts": {
    "lint:commit": "git diff --cached --name-only | grep .js$ | xargs eslint",
    "precommit-msg": "echo 'Pre-commit checks...' && exit 0"
  },
  "devDependencies": {
    "eslint": "^3.14.1",
    "pre-commit": "^1.2.2"
  }
}