MEMO2019-07-14リントエラー時にコミットをキャンセルさせる結論huskyとlint-stagedを導入すればいい。}}注意husky導入以前に、.git/hooksにpre-commitなどのフックファイルを作成していないことhuskyはインストール時に.git/hooksにpre-commit等のフックファイルを自動生成する。事前にフックファイルを時前で作っていると、存在しているフックファイルに関しては既存の物が優先され、huskyに必要なフックファイルが生成されずスキップされてしまう。結果、huskyによるフックが正常に動作しなくなるので注意。package.jsonがリポジトリのルートに存在していること前述の通り、huskyはインストール時にフックファイルを自動生成するが、package.jsonと同じディレクトリに.gitディレクトリが存在しない場合は生成されない。一つのリポジトリでフロントエンドからバックエンドまで一緒くたに管理している場合この状況に陥ってhuskyが動作しなくなるので注意。以下、調べた事を雑に書く.git/hooksディレクトリにpre-commit等フックのタイミングに応じた名前のシェルスクリプトを配置することで、特定のタイミングでシェルスクリプトを実行できる。フックが異常終了した場合、その時の動作がキャンセルされる。pre-commitで異常終了した場合はコミットがキャンセルされる。1なので、こんなpre-commitファイルを配置すると、コミットが常にキャンセルされる。main.jsこういうpre-commitファイルを配置すると、main.jsでリントエラーが発生した場合はコミットがキャンセルされる。これを応用することでコミット時にリントを走らせて、エラーがあればコミットキャンセルすることでESLintを常に守らせることができる。.gitディレクトリはGit監視対象外のディレクトリなので、このままだとプロジェクトメンバー全員に手動でpre-commitファイルの設定をしてもらわないといけない。それを解決するのがhusky。huskyをプロジェクトでインストールしているとpackage.jsonにフック動作を記述することが出来るのでフック動作をGitで管理することが可能になる。lint-stagedを利用することで特定の拡張子を持つコミット対象のファイルのみリントの対象とすることが出来るので大体それも一緒に使う。lintとかすると、リントエラー時にESLintのエラーメッセージに加えて以下のようなエラーが出力される。/Users/user/.npm/_logs/2019-07-14T05_53_02_446Z-debug.logどうもこれはnpm自体のエラーで、ESLintのエラー時にはこのエラーが出るのが正常みたい。lintとすればいいらしい。はらへり日記-sはnpmのオプションで、npmのエラーを出力させたくない場合に使うみたい。VueCLIで作られるpackage.jsonには「husky」ではなく「gitHooks」という記述だがあれは?VueCLIではhuskyからEvan自らforkしたyorkieを使っているみたい。