yarn installをオフラインで行うときの管理方法
2020/08/31
累計閲覧数 2131 PV
ローカルのインストールはうまくいくが、CIなどのサーバー内部でyarn installが次のようにコケる場合がある。 こうなったとき、自分が管理者でない限りNetworkの改善を待つか、サーバーを移転するか、諦めるかしかない。 ただ、どの選択肢もコストが高く付く場合、yarnのoffline installを利用してこの問題を暫定的に回避することができる。
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
info There appears to be trouble with your network connection. Retrying...
error An unexpected error occurred: "https://registry.yarnpkg.com/[packge name]/-/[package name]-[version].tgz: unexpected end of file".
yarn install --offline
のセットアップをする2016年の記事だが、Running Yarn offlineを参考に勧めていくと良い。
リポジトリ名: yarn-offline-mirror
yarn-offline-mirror
をsubmoduleとして追加する適宜自分のリポジトリに変更してほしい
git submodule add path/to/your/yarn-offline-mirror.git
.yarnrc
にoffline installを使うように設定を書く# packageのmirrorが保存されれているディレクトリを指定
yarn-offline-mirror "./yarn-offline-mirror"
# 参照しなくなったパッケージの自動削除: https://classic.yarnpkg.com/ja/docs/prune-offline-mirror/
yarn-offline-mirror-pruning true
yarn-offline-mirror
にtarを配置するcacheディレクトリを削除します。
yarn cache dir
rm -rf [上記の場所]
プロジェクトのnode_modules
ディレクトリをすべて削除します。
rm -rf node_modules packages/**/node_modules
この状態で、yarn installをかけます。--verbose
はお好みでつけてもらって良いですが、正しくオフラインミラーが作成されない場合に、吐き出されたログが参考になります。
yarn install --verbose >> install.log
想定されるエラー
Step 4が正しく行えていない場合、以下のエラーに遭遇するでしょう。
error Can't make a request in offline mode ("https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz")
yarn-offline-mirror
をcommit/pushするStep 4が完了すると、yarn-offline-mirror
に大量にtarが吐き出されるので、コミットしておきます。
完了した後、yarn-offline-mirror
をpushしておきます。
yarn-offline-mirror
のコミットハッシュをプロジェクト側でコミットします。
yarn install
をyarn install --offline
に変更する最後は単純で、オフラインミラーを利用したい箇所で、--offline
オプションを追加します。
そうとも限らなさそう?(調査中)