例えばpackage.jsonに以下のように書いてあったとします。
"scripts": {
"preinstall": "echo 1",
"postinstall": "echo 2",
"prepare": "echo 3",
}そして、yarn(またはyarn install)すると、
yarn
# yarn install v1.12.3
# $ echo 1
# 1
# [1/4] 🔍 Resolving packages...
# success Already up-to-date.
# $ echo 2
# 2
# $ echo 3
# 3という感じで全部実行されます。ローカルマシンでは自分で叩くようにしていると忘れていたりするのでこの動作は助かります。(特にpublish前のprepare)
ただprepareでビルド処理とかしていると実行時間がただのyarnに比べて3,4倍になってしまっている感じもします。僕の CI 環境は、無料実行時間カツカツな状態なので、フックしなくていいから少しでも早く終わらせたいです。
--ignore-scripts
もう一度ドキュメントを読みました。そうしたら、どうやらこのオプションを使うといけるようです。
このオプションを使うと上記と同じscriptsの設定で、
yarn --ignore-scripts
# yarn install v1.12.3
# [1/4] 🔍 Resolving packages...
# success Already up-to-date.
# ✨ Done in 0.79s.だけのログになりフックされないようにすることができました。
フックに依存しているパッケージを使っている時の注意
nowを CircleCI 上で使おうとした所インストール時のフック処理がされずにおかしなことになりました。どうやらこのオプションは依存のフックも無効化してしまうようです。このような場合は、それ単体で再度インストールコマンドを実行して入れる感じで対応するといいと思います。