huskyとlint-stagedを使って、コミット時に自動でlintを走らせるのは一般的だと思う。
しかしDockerのnode
コンテナで開発しているプロジェクトを、ローカルのWindowsなどからGitでコミットすると、lint-stagedのバイナリが実行できない。これはバイナリがwindowsで使われることを想定していない、つまりlinux向けにコンパイルされたものだからである。
こういった場合は、以下のようにdocker-compose run
でコンテナ越しにlint-stagedを呼び出すと良い。
package.json
"husky": {
"hooks": {
"pre-commit": "docker-compose run --rm node yarn exec lint-staged"
}
},
"lint-staged": {
"*.{js,vue}": [
"eslint --fix",
"git add"
]
},
alpineイメージを使用する場合だと、gitがインストールされていないため、Dockerfileを以下のように書く。
FROM node:11.12-alpine
RUN apk add --no-cache git
ついでにdocker-compose.yml
も載せておく。
docker-compose.yml
version: '3'
services:
node:
build:
context: ./docker/node