🎃

最近の lint-staged 状況

2021/03/28に公開

2021/05/03 追記

npx mrm lint-stagedすると husky が使われるようになっていた。。

diff --git a/package.json b/package.json
index e51f73f..b453335 100644
--- a/package.json
+++ b/package.json
@@ -3,11 +3,18 @@
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "prepare": "husky install"
   },
   "license": "MIT",
   "devDependencies": {
     "eslint": "^7.25.0",
+    "husky": "^6.0.0",
+    "lint-staged": "^10.5.4",
     "prettier": "2.2.1"
+  },
+  "lint-staged": {
+    "*.js": "eslint --cache --fix",
+    "*.{js,css,md}": "prettier --write"
   }
 }

環境

% sw_vers
ProductName:    macOS
ProductVersion: 11.3
BuildVersion:   20E232

% node -v
v16.0.0

% npm -v
7.10.0

以下は、2021/03/28 ころの状況です。

はじめに

最近の lint-stagedsimple-git-hooks が使われていて、少しハマったので覚書。
何にハマったかというと、コミットしても何も起きなかった><

作業用ディレクトリ作成

$ mkdir try-lint-staged && cd $_
$ git init
$ gibo dump macos linux windows node > .gitignore
$ git add .
$ git commit -m 'initial commit'

Prettier, ESLint のインストール

$ npm init -y
$ npm install --save-dev --save-exact prettier
$ npm i -D eslint

lint-staged のインストール

$ npx mrm lint-staged

package.json の差分はこんな感じ。

diff --git a/package.json b/package.json
index 1843f0a..f461660 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,15 @@
   "license": "ISC",
   "devDependencies": {
     "eslint": "^7.23.0",
-    "prettier": "2.2.1"
+    "lint-staged": "^10.5.4",
+    "prettier": "2.2.1",
+    "simple-git-hooks": "^2.2.0"
+  },
+  "simple-git-hooks": {
+    "pre-commit": "npx lint-staged"
+  },
+  "lint-staged": {
+    "*.js": "eslint --cache --fix",
+    "*.{js,css,md}": "prettier --write"
   }
 }

解決

このままでは、コミットしても何も起きないので、以下のコマンドを実行する。

$ npx simple-git-hooks 

simple-git-hooks のフックを増やす度に、上記のコマンドの実行が必要。

Discussion