Parcel2 にしてからずっと起きていて困っていた問題
Parcel ではビルドで出力されるリソースファイルのファイル名にハッシュ値がつけられます
同じソースに対して複数回ビルドしても同じ出力になることを期待しますが ハッシュ値が時々かわります
対象は PNG ファイルです

ハッシュ値だけの問題だと思っていましたが ファイルを保存しておき比べてみるとファイルそのものも異なっていました
ファイルサイズも違います
Parcel では最適化による圧縮が行われるので 出力されるファイルは元ファイルとは異なるものです
同じファイルを入力すると圧縮されたファイルは毎回同じになってほしいのですが そうならないようです
ただし 確認している限りでは無数のパターンがあるわけではなく 2 パターンでそのどちらかになるような挙動です

バイナリデータ的に違いが出ているのは PNG ファイルの画像本体部分です
圧縮時に使用するアルゴリズムを選ぶとき どっちでもいい場合は再現性のない選び方をしているとかでしょうか?
PNG の最適化は中で oxipng が使われているので Parcel というよりはこっちの問題の可能性が高いです

もう少し調べてみようかなと思い 再現する環境を準備でしていました
しかし なぜか再現しません
バージョンは変わっていません
ですが PC を変えてみると再現します
発生しない PC だと WSL の Linux 環境でも Windows 環境でも発生していません

最適化の処理は Rust で書かれたネイティブな部分ですし CPU の種類が影響したりするのでしょうか?
たしかに発生している PC はいずれも Intel 製で Windows11 にできないくらいは古いもので 発生していないのはそれよりは新しい AMD 製です
ただ ARM ならともかく Intel と AMD ならこんな問題起きないように思いますけど
中で並列処理をしていて 実行速度によってタイミングの問題で発生する場合があったりでしょうか

どうにかできそうなものじゃなさそうですし 修正される期待もあまりできないので Parcel を使うのをやめたほうが早そうです
最近は Vite 一択になりつつありますし Parcel 使ってるのもできるだけ Vite に移していきたいですね

ただ Vite は最近の更新で Parcel で使ってる lightningcss をサポートしたようです
その流れで画像の最適化も始めて Parcel と同じ問題を持ってくるというのが心配です