LoginSignup
1
0

More than 3 years have passed since last update.

huskyを使っているプロジェクトでApp Engineへのデプロイが失敗するときの対処法

Posted at

現象

コミット時に lint を走らせるために husky を設定しているプロジェクトも多いと思います。
huskyを設定すると npm scripts に"prepare": "husky install"が設定されます。
これにより、npm installなどが走ったあとにhusky installが実行されるため、 全開発メンバーが git-hooks を割と確実に設定することができるようになります。
しかし、この npm scripts のせいで、App Engineへのデプロイ中に以下のエラーがでるようになってしまいました。

husky: not found

この対処法を思いついたので、備忘録として記事に残します。

環境

  • Mac
  • Node 14
  • husky 6.0.0

解決方法

package.json
"prepare": "node --eval 'process.exit(process.env.NODE_ENV === `production` ? 0 : 1)' || husky install",

日本語にすると「NODE_ENV環境変数がproductionではないときだけhusky installを実行する」となります。APP EngineではNODE_ENV=productionが設定されているため、husky installがスキップされます。

解説

node --eval

JavaScriptのコードをインラインで実行することができます。

node --eval 'console.log("foo")'
# -> foo

process.exit(process.env.NODE_ENV === production ? 0 : 1)

NODE_ENV 環境変数が production のとき、正常終了し、そうでない場合は、終了コード1を出して失敗します。

||

前のコマンドが失敗したときに、後ろのコマンドを実行します。

まとめ

App Engineは強い。

1
0
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
1
0