例えば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 上で使おうとした所インストール時のフック処理がされずにおかしなことになりました。どうやらこのオプションは依存のフックも無効化してしまうようです。このような場合は、それ単体で再度インストールコマンドを実行して入れる感じで対応するといいと思います。