import Patch from "/snippets/cli/patch.mdx";
bun patch を使用すると、維持可能で Git に優しい方法で node_modules に永続的にパッチを適用できます。
場合によっては、バグを修正したり機能を追加したりするために node_modules/ 内のパッケージに小さな変更を加える必要があります。bun patch を使用すると、パッケージ全体をベンダリングすることなく、これを簡単に行い、複数のインストール、複数のプロジェクト、複数のマシンでパッチを再利用できます。
機能:
- インストール時に
node_modules内の依存関係に適用される.patchファイルを生成 .patchファイルはリポジトリにコミットでき、複数のインストール、プロジェクト、マシンで再利用可能package.json内の"patchedDependencies"がパッチ適用されたパッケージを追跡bun patchを使用すると、Bun の グローバルキャッシュ の整合性を保ちながらnode_modules/内のパッケージにパッチを適用できますbun patch --commit <pkg>を使用して、コミットする前にローカルで変更をテスト- ディスク容量を節約し
bun installを高速に保つために、パッチ適用されたパッケージはグローバルキャッシュにコミットされ、可能な限りプロジェクト間で共有されます
ステップ 1. パッチ適用のためにパッケージを準備する
開始するには、bun patch <pkg> を使用してパッチ適用のためにパッケージを準備します。
# パッケージ名を指定できます
bun patch react
# ...複数のバージョンがインストールされている場合は正確なバージョンを指定
bun patch react@17.0.2
# またはパッケージへのパスを指定
bun patch node_modules/react注
bun patch <pkg> を呼び出すことを忘れないでください!これにより、node_modules/ 内のパッケージフォルダに Bun のキャッシュへのシンボリックリンク/ハードリンクがないパッケージの新鮮なコピーが含まれていることが保証されます。 これを忘れると、グローバルにキャッシュ内のパッケージを編集してしまう可能性があります!
ステップ 2. ローカルで変更をテストする
bun patch <pkg> を使用すると、Bun の グローバルキャッシュ の整合性を保ちながら、node_modules/ 内の <pkg> を直接編集しても安全です。これは、グローバルキャッシュ内の元のパッケージに対して差分を取得し、node_modules/ 内にリンクされていないパッケージのクローンを作成することで機能します。
ステップ 3. 変更をコミットする
変更が完了したら、bun patch --commit <path or pkg> を実行します。
Bun は patches/ にパッチファイルを生成し、package.json とロックファイルを更新し、Bun はパッチ適用されたパッケージを使用し始めます。
# パッチ適用されたパッケージへのパスを指定できます
bun patch --commit node_modules/react
# ...またはパッケージ名とオプションでバージョンを指定
bun patch --commit react@17.0.2
# パッチファイルを保存するディレクトリを選択
bun patch --commit react --patches-dir=mypatches
# `patch-commit` は pnpm との互換性のために利用可能
bun patch-commit react