zipコマンドでmacOS用アプリケーション(.app)を圧縮する場合は-yオプションをつける


困ったこと

Electronで作成したmacOS用のアプリケーションを「zip -r」コマンドで圧縮して解凍するとファイルサイズがめちゃめちゃ大きくなっている(140MB -> 350MB)

原因

アプリケーション内部にシンボリックリンクがあり、「zip -r」で圧縮するとシンボリックリンクが実ファイルに置き換えられてファイルサイズが大きくなる

$ ls -al Hoge.app/Contents/Frameworks/Electron\ Framework.framework
total 0
lrwxr-xr-x  1 user1  staff    35B 11  8 13:39 Electron Framework -> Versions/Current/Electron Framework
lrwxr-xr-x  1 user1  staff    26B 11  8 13:39 Libraries -> Versions/Current/Libraries
lrwxr-xr-x  1 user1  staff    26B 11  8 13:39 Resources -> Versions/Current/Resources
drwxr-xr-x  4 user1  staff   128B 11  8 13:39 Versions

解決策

-yオプションをつけてシンボリックリンクを実ファイルに置き換えずに圧縮する

$ zip -ry Hoge.zip Hoge.app