Apple Silicon でsharpを動作させるには、少々工夫が必要です。(2021/02/10 現在)
前提
ARM 版の Node.js, Homebrew, Docker がセットアップ済みであること
方法その1 ローカル環境で使う
- 単に brew で
vipsをグローバルにインストールしておけば OK です。 - Command line tools for Xcode を事前に入れておきましょう。そうしないと、インストール時に
gccをソースからビルドしようとしてものすごく時間がかかります
xcode-select --install # CLTが未インストールの場合のみ
brew install vips‣
方法その2 Docker 環境で使う
Docker 環境ならば何も考えずにいけるかと思いきや、やはりビルドに失敗します。これは、 Node.js の ARM64 版イメージのglibが、sharp のビルド環境に適合しないためだそうです。
参考
解消するためには Debian の最新版である bullseye(未リリース)を使えば良いのですが、Node.js の公式としてはリリースされていません。 そのため、Node.js を使える bullseye の環境を自前で用意する必要があります。 例えば、下記のような Dockerfile を自前で作成します。
この Dockerfile の末尾に自分の Dockerfile を追記するか、あるいは上記で作成したイメージを使ってコンテナを走らせれば、プレビルドされたsharpがダウンロードされ、スムーズに問題なく動作します。
総括
これさえクリアできれば ARM ネイティブで動かせるプロジェクトが結構あって嬉しい!