Skip to content

bun install は、Node.js 互換の npm クライアントで、npm の非常に高速な後継者として設計されています。

npm install から bun install への移行パスを、npm install の代わりに bun install を実行するだけで済むほど簡単にすることに力を注いできました。

  • Node.js と Bun 向けに設計: bun install は Node.js 互換の node_modules フォルダをインストールします。コード変更なしに、Bun ランタイムを使用せずに Node.js プロジェクト向けに npm install の代わりに使用できます。
  • 自動的に package-lock.json を変換: Bun の bun.lock ロックファイル形式に自動的に変換し、既存の解決済み依存関係のバージョンを手作業なしで保持します。誰も気づかずに職場で npm install の代わりにこっそり bun install を使用できます。
  • .npmrc 互換: bun install は npm の .npmrc から npm レジストリ設定を読み取るため、npm と Bun の両方で同じ設定を使用できます。
  • ハードリンク: Windows と Linux では、bun install はディスク容量とインストール時間を節約するためにハードリンクを使用します。
bash
# 移行には 1 つのコマンドだけで済みます
bun i

# 依存関係を追加するには:
bun i @types/bun

# devDependencies を追加するには:
bun i -d @types/bun

# 依存関係を削除するには:
bun rm @types/bun

package.json スクリプトをより高速に実行

package.json のスクリプト、node_modules/.bin の実行可能ファイル(npx のようなもの)、JavaScript/TypeScript ファイル(node と同じ)を、単一のシンプルコマンドですべて実行できます。

NPMBun
npm run <script>bun <script>
npm exec <bin>bun <bin>
node <file>bun <file>
npx <package>bunx <package>

bun run <executable> を使用すると、ローカルにインストールされた実行可能ファイルが選択されます。

sh
# package.json スクリプトを実行:
bun my-script
bun run my-script

# node_modules/.bin の実行可能ファイルを実行:
bun my-executable # tsc、esbuild など
bun run my-executable

# JavaScript/TypeScript ファイルを実行:
bun ./index.ts

ワークスペース?はい、サポートしています。

bun install は npm と同様にワークスペースをサポートしており、さらに多くの機能を備えています。

package.json で、"workspaces" を相対パスの配列に設定できます。

json
{
  "name": "my-app",
  "workspaces": ["packages/*", "apps/*"]
}

ワークスペース名でスクリプトをフィルタ

Bun では、--filter フラグがグロブパターンを受け付け、パターンに一致する name を持つすべてのワークスペースパッケージに対してコマンドを並列で実行し、依存関係の順序を尊重します。

sh
bun --filter 'lib-*' my-script
# npm の場合:
# npm run --workspace lib-foo --workspace lib-bar my-script

依存関係を更新

依存関係を更新するには、bun update <package> を使用できます。これにより、package.json で指定された semver 範囲を満たす最新バージョンに依存関係が更新されます。

sh
# 単一の依存関係を更新
bun update @types/bun

# すべての依存関係を更新
bun update

# semver を無視して最新バージョンに更新
bun update @types/bun --latest

# 依存関係を特定のバージョンに更新
bun update @types/bun@1.3.3

# すべての依存関係を最新バージョンに更新
bun update --latest

古い依存関係を表示

古い依存関係を表示するには、bun outdated を実行します。これは npm outdated と似ていますが、よりコンパクトな出力です。

sh
bun outdated
txt
┌────────────────────────────────────────┬─────────┬────────┬────────┐
│ Package                                │ Current │ Update │ Latest │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @types/bun (dev)                       │ 1.1.6   │ 1.1.10 │ 1.1.10 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @types/react (dev)                     │ 18.3.3  │ 18.3.8 │ 18.3.8 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @typescript-eslint/eslint-plugin (dev) │ 7.16.1  │ 7.18.0 │ 8.6.0  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @typescript-eslint/parser (dev)        │ 7.16.1  │ 7.18.0 │ 8.6.0  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ @vscode/debugadapter (dev)             │ 1.66.0  │ 1.67.0 │ 1.67.0 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ esbuild (dev)                          │ 0.21.5  │ 0.21.5 │ 0.24.0 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ eslint (dev)                           │ 9.7.0   │ 9.11.0 │ 9.11.0 │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ mitata (dev)                           │ 0.1.11  │ 0.1.14 │ 1.0.2  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ prettier-plugin-organize-imports (dev) │ 4.0.0   │ 4.1.0  │ 4.1.0  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ source-map-js (dev)                    │ 1.2.0   │ 1.2.1  │ 1.2.1  │
├────────────────────────────────────────┼─────────┼────────┼────────┤
│ typescript (dev)                       │ 5.5.3   │ 5.6.2  │ 5.6.2  │
└────────────────────────────────────────┴─────────┴────────┴────────┘

インストール済みパッケージを一覧表示

インストール済みパッケージを一覧表示するには、bun pm ls を使用できます。これにより、Bun のロックファイルを信頼できる情報源として使用して、node_modules フォルダにインストールされているすべてのパッケージが一覧表示されます。-a フラグを渡すと、推移的依存関係を含むすべてのインストール済みパッケージを一覧表示できます。

sh
# トップレベルのインストール済みパッケージを一覧表示:
bun pm ls
txt
my-pkg node_modules (781)
├── @types/node@20.16.5
├── @types/react@18.3.8
├── @types/react-dom@18.3.0
├── eslint@8.57.1
├── eslint-config-next@14.2.8
...
sh
# すべてのインストール済みパッケージを一覧表示:
bun pm ls -a
txt
my-pkg node_modules
├── @alloc/quick-lru@5.2.0
├── @isaacs/cliui@8.0.2
│   └── strip-ansi@7.1.0
│       └── ansi-regex@6.1.0
├── @jridgewell/gen-mapping@0.3.5
├── @jridgewell/resolve-uri@3.1.2
...

パッケージ tarball を作成

パッケージ tarball を作成するには、bun pm pack を使用できます。これにより、現在のディレクトリにパッケージの tarball が作成されます。

sh
# tarball を作成
bun pm pack
txt
Total files: 46
Shasum: 2ee19b6f0c6b001358449ca0eadead703f326216
Integrity: sha512-ZV0lzWTEkGAMz[...]Gl4f8lA9sl97g==
Unpacked size: 0.41MB
Packed size: 117.50KB

Shebang

パッケージが #!/usr/bin/env node shebang で node を参照している場合、bun run はデフォルトでこれを尊重し、システムの node 実行可能ファイルを使用します。bun run--bun を渡すことで、Bun の node を使用するよう強制できます。

bun run--bun を渡すと、ローカルにインストールされた Bun 実行可能ファイルへのシンボリックリンクを "node" という名前で一時ディレクトリに作成し、スクリプトの実行中、それを PATH に追加します。

sh
# node の代わりに Bun のランタイムを強制使用
bun --bun my-script

# これも動作します:
bun run --bun my-script

グローバルインストール

bun i -g <package> を使用してパッケージをグローバルにインストールできます。これにより、デフォルトでホームディレクトリ内の .bun/install/global/node_modules フォルダにインストールされます。

sh
# パッケージをグローバルにインストール
bun i -g eslint

# `bun run` プレフィックスなしでグローバルにインストールされたパッケージを実行
eslint --init

Bun by www.bunjs.com.cn 編集