BunからExpoを使う
はじめに
さっそく試してみます。
Bunとは
本題に入る前にBunのおさらいです。Bunはランタイムやパッケージマネージャーなどの機能を兼ね備えたオールインワンのJavaScript & TypeScriptツールです。
特に速度を売りにしています。
Node.jsの代わりにBunをJSのランタイムとして使うことが可能ですし、npmやyarnといったパッケージマネージャーの代わりとしてもBunは使えます。
BunからExpoを試す
それでは早速Bunを使ってExpoプロジェクトを作成してみます。
bun create expo my-app
ls my-app
App.js assets/ bun.lockb* package.json
app.json babel.config.js node_modules/
お馴染みのファイルたちに混ざって、 bun.lockb
ファイルが作成されているのがポイントです。
bun create
コマンドにより、Bunのテンプレート機能が使われてExpoプロジェクトが作成されました。
現在のところTypeScriptを使うExpoプロジェクトを作成することは出来ないようです。
次にbunからExpoサーバーを起動してみます。
bun run ios
ただし、ここに書かれている通り bun run
コマンドは package.json
に書かれたスクリプトを実行しているため、 上記コマンドは expo start --ios
を実行しているのと同じで、Bunランタイムが使われているわけではありません。
最後に bun install
を試してみます。
Bunを使ってパッケージのインストールが可能です。
% bun install
bun install v1.0.3 (25e69c71)
+ @babel/core@7.23.0
+ expo@49.0.12
+ expo-status-bar@1.6.0 (v1.7.1 available)
+ react@18.2.0
+ react-native@0.72.5
859 packages installed [1247.00ms]
1秒程度でパッケージのインストールが終わりました。
ちなみに、yarnを使ってパッケージのインストールをすると10秒程度かかりました。
Bunが公式に発表しているベンチマークを見ると、
The goal of this benchmark is to compare installation performance of Bun with other package managers when caches are hot.
と書かれているので、キャッシュを使ってこの速度を実現しているようです。
終わりに
ExpoプロジェクトのパッケージマネージャーとしてBunが使えるようになりました。
Expo CLIのランタイムがBunに変わったわけではない、という点には注意が必要です。
Bunを使うと、とにかく素早くExpoプロジェクトを立ち上げられる、というのがメリットでしょうか。
Discussion