Apple Siliconでsharpを動かす

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 ネイティブで動かせるプロジェクトが結構あって嬉しい!