お首が長いのよお首が長いのよ

チラシの裏よりお届けするソフトウェアエンジニアとして成長したい人のためのブログ

2023-01-08

yarn 実行時に sharp & vips でエラー

GatsbyJS を使って構築したブログを yarn コマンドでパッケージのインストールしなおしをしたところ、下記のようなエラーが出て失敗した。

bash
1error /Users/killinsun/src/github.com/killinsun/gatsby-blog/node_modules/sharp: Command failed.
2Exit code: 1
3Command: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
4Arguments:
5Directory: /Users/killinsun/src/github.com/killinsun/gatsby-blog/node_modules/sharp
6Output:
7info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.10.5/libvips-8.10.5-darwin-arm64v8.tar.br
8ERR! sharp Prebuilt libvips 8.10.5 binaries are not yet available for darwin-arm64v8
9info sharp Attempting to build from source via node-gyp but this may fail due to the above error
10

sharp パッケージ内の下記コマンドに失敗したようである。

bash
1Command: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
2

さらに読み進めると、 vips ライブラリが存在していないことが原因で起こられていた。上記コマンド内でも node install/libvips を叩いているので納得がいく。

bash
1../src/common.cc:24:10: fatal error: 'vips/vips8' file not found
2#include <vips/vips8>
3         ^~~~~~~~~~~~
41 error generated.
5make: *** [Release/obj.target/sharp/src/common.o] Error 1
6gyp ERR! build error
7gyp ERR! stack Error: `make` failed with exit code: 2
8gyp ERR! stack     at ChildProcess.onExit (/Users/killinsun/.nvm/versions/node/v16.16.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
9gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
10gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
11gyp ERR! System Darwin 21.6.0
12gyp ERR! command "/Users/killinsun/.nvm/versions/node/v16.16.0/bin/node" "/Users/killinsun/.nvm/versions/node/v16.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
13gyp ERR! cwd /Users/killinsun/src/github.com/killinsun/gatsby-blog/node_modules/sharp
14

解決

macOS を使っている場合は brew コマンドで vips をインストールすれば解決した。

bash
1% brew search vips
2ryota@rytake-mba-m2 gatsby-blog % brew search vips
3==> Formulae
4vips                                                                 vip                                                                   vis
5
6% brew install vips
7

sharp と vips について

sharp

sharp は npm 製ライブラリで、主に画像を変換、リサイズするためのパッケージらしい。

vips

libvips は画像処理パッケージ。メモリにやさしい。 今回のケースでいうと、sharp が依存しているライブラリといったところ。

/ 以上

よかったらシェアしてください!