タイトル通りエラーがimageminをpnpmで利用しようとしたらエラーが出てしまいましたが、以下で解決したので備忘録として残しておきます
実行環境
os:mac ventura
チップ:Apple M1 Pro
pnpm@10.10.0
node@23.7.0
解決策
以下を追加後にpnpm install
でnode_modulesをインストールしたら解決しました
"pnpm": {
"neverBuiltDependencies": []
}
原因
yarn
を利用時は問題ないのにpnpm
で利用しようとするとエラーが出てしまいました。
原因を調べているとエラー内容が似ている以下を見つけました
ENOENT for .bin/moon After Update to v10.8.1 from v9.15.9 #9436
以下は Gemini に翻訳してもらった原因です
原因: pnpm v10 以降のビルド最適化と optipng-bin
pnpm の比較的新しいバージョン(特に v10.x 以降)では、インストールプロセスを高速化し、リソース使用量を>削減するために、一部の依存関係のビルドスクリプト(postinstall スクリプトなど)をデフォルトでスキップするようになりました。これは、多くのパッケージにとってパフォーマンス向上につながる賢い最適化ですが、ネイティブバイナリをビルドする必要があるパッケージにとっては問題となります。
imagemin は、画像最適化のコア部分で optipng-bin や mozjpeg-bin といったバイナリラッパーに依存しています。これらの *-bin パッケージは、もしプリビルドされたバイナリが利用できない場合(例えば、Apple Silicon のように新しいアーキテクチャや、特定の環境)、ソースコードからバイナリをコンパイルするための install または postinstall スクリプトを実行します。
ということで追加しinstallし直して実行したら解決しました。
ちなみにモノレポを利用しているプロジェクトではルートに設定するのが推奨とのことです