ブログ記事

Bun 1.1リリース!npm互換性を徹底検証してみた

Bun 1.1が今週リリース。「npm/yarn/pnpmの完全互換」を謳うBunで、実際に既存プロジェクトを動かしてみた結果、衝撃の速さと意外な落とし穴を発見。

4分で読めます
R
Rina
Daily Hack 編集長
ツール
Bun npm パフォーマンス 最新技術
Bun 1.1リリース!npm互換性を徹底検証してみたのヒーロー画像

Bun 1.1 がリリースされました!「npmや yarn の 5 倍速い」という触れ込みを見て、即座に試してみました。

結論:速さは本物、でもまだ完璧じゃない。

パフォーマンス比較:衝撃の結果

実際のプロジェクト(依存関係 200 個)で測定:

npm install 100 %
完了
yarn install 74 %
pnpm install 67 %
bun install 14 %
  • npm: 42.3 秒
  • yarn: 31.2 秒
  • pnpm: 28.5 秒
  • Bun: 5.8秒 🚀

7 倍以上速い!これは体感できるレベルの違いです。

方法1: npmのディレクトリを変更(推奨)

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

方法2: sudoを使う(非推奨)

sudo npm install -g パッケージ名

注意

sudo を使うとパーミッションがおかしくなることがあるので、できるだけ避けましょう。 私は一度これで環境を壊しました…

ERESOLVE unable to resolve dependency tree

エラー内容

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: my-app@1.0.0
npm ERR! Found: react@18.2.0
npm ERR! node_modules/react
npm ERR!   react@"^18.2.0" from the root project

原因

パッケージ間の依存関係が解決できない。npm v7 以降で厳密になった。

解決方法

方法1: —legacy-peer-depsを使う

npm install --legacy-peer-deps

方法2: —forceを使う(最終手段)

npm install --force

方法3: package-lock.jsonを削除

rm package-lock.json
rm -rf node_modules
npm install

私は最初、方法 3 で解決することが多かったです。

npm ERR! network

エラー内容

npm ERR! network request to https://registry.npmjs.org/express failed, reason: connect ETIMEDOUT
npm ERR! network This is a problem related to network connectivity.

原因

  • 会社のプロキシ
  • ネットワークが不安定
  • npmのレジストリがダウン(まれ)

解決方法

会社のプロキシの場合

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

レジストリを変更

# 中国のミラーを使う例
npm config set registry https://registry.npmmirror.com

タイムアウトを延長

npm config set fetch-timeout 60000

node-gyp rebuild failed

エラー内容

npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit

原因

ネイティブモジュールのビルドに必要なツールがない。

解決方法

macOSの場合

xcode-select --install

Windowsの場合

管理者権限で PowerShell を開いて:

npm install --global windows-build-tools

Linuxの場合

sudo apt-get install build-essential

私は macOS で Xcode のアップデート後によくこのエラーに遭遇します。

ENOENT: no such file or directory

エラー内容

npm ERR! enoent ENOENT: no such file or directory, open '/Users/username/project/package.json'

原因

package.json がないディレクトリで npm install を実行した。

解決方法

# プロジェクトのルートディレクトリに移動
cd /path/to/project

# または新規プロジェクトなら初期化
npm init -y

恥ずかしながら、これは今でもたまにやります。

Cannot find module ‘node-sass’

エラー内容

Error: Cannot find module 'node-sass'
Require stack:
- /Users/username/project/node_modules/sass-loader/dist/utils.js

原因

node-sass のバージョンと Node.jsのバージョンが合わない。

解決方法

方法1: node-sassを再インストール

npm uninstall node-sass
npm install node-sass

方法2: sassに移行(推奨)

npm uninstall node-sass
npm install sass

node-sass は本当にトラブルが多いので、可能なら sass(Dart Sass)への移行がおすすめです。

キャッシュ関連のエラー

エラー内容

npm ERR! cb() never called!
npm ERR! This is an error with npm itself.

原因

npmのキャッシュが壊れている。

解決方法

npm cache clean --force

これで解決しない場合は、npmのバージョンを更新:

npm install -g npm@latest

最後に

npm install でエラーが出ると本当にイライラしますよね。

でも、大抵のエラーは誰かが既に遭遇していて、解決方法も存在します。 このページが少しでも役に立てば幸いです。

新しいエラーに遭遇したら、随時追加していきます。

それでも解決しない場合

  1. エラーメッセージ全文で Google検索
  2. GitHubの issues を確認
  3. Stack Overflow で質問
  4. 最終手段: node_modules と package-lock.json を削除して最初から
Rinaのプロフィール画像

Rina

Daily Hack 編集長

フルスタックエンジニアとして10年以上の経験を持つ。 大手IT企業やスタートアップでの開発経験を活かし、 実践的で即効性のある技術情報を日々発信中。 特にWeb開発、クラウド技術、AI活用に精通。

この記事は役に立ちましたか?

あなたのフィードバックが記事の改善に役立ちます

この記事は役に立ちましたか?

Daily Hackでは、開発者の皆様に役立つ情報を毎日発信しています。