0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ひとりJavaScriptAdvent Calendar 2024

Day 1

【JavaScript】Bunって何?基本的なコマンド紹介

Last updated at Posted at 2024-11-30

簡単な紹介

BunはJavaScriptのAll-in-Oneなツールキットです。

以下のような特徴があります。

  • ランタイムが非常に高速
  • TypeScriptをサポート
  • 高速なパッケージマネージャが付属している
  • テストランナーなど、ほかにも便利なものが付属している
  • Node.js互換

公式サイトはこちらです。

インストール

Linux & MacOSでは、コマンド一つでインストールできます。

ターミナル
curl -fsSL https://bun.sh/install | bash

詳しくはこちら

Homebrewを使う場合

BunはHomebrewでも公開されているので、Macユーザーならここからインストールできます。

ターミナル
brew install oven-sh/bun

Hello World!

まずはコードを用意します。

index.js
console.log("Hello World!");

これを実行するにはbunコマンドを使います。
bun ファイルへのパスで実行できます。

ターミナル
bun index.js
# Hello World!

基本的なコマンド

私的によく使うと思うコマンドをざっくり紹介します。

確認

バージョン

バージョンはbun -v or bun --versionで見れます。

ヘルプ

--helpオプションをつけると、コマンドのヘルプを見ることができます。
bun --helpからコマンド一覧も見れます。

実行

JavaScriptのコードの実行は、bunもしくはbun runコマンドでできます。

ファイルパスを指定して実行

ターミナル
bun パス
# or
bun run パス

タスクを実行

タスク=package.jsonscriptに書かれているコマンドも、先ほどと同じ方法で実行できます。

例えばpackage.jsonを以下のように定義します。

package.json
{
  // ...
  "scripts": {
    "dev": "bun src/index.js"
  }
}

このdevは、ファイルパスを指定するときと同じコマンドで実行できます。

ターミナル
bun run dev
# or
bun dev

初期化

初期化

bun initコマンドを使うと簡単にプロジェクトを初期化できます。

ターミナル
bun init

ちなみに、私はそんなに使ってません。
ただJavaScriptを実行するだけなら初期化する必要はなく、ファイルを作ってそのまま実行できます。
必要になるのは外部のライブラリを使う時でしょうか。

しかし、フレームワークなどに乗っかって開発する場合、すでにテンプレートが用意されていることが多いです。
そのため後述のbun createのほうが使う場面は多そうです。

テンプレートから初期化

初期化の方法には、ほかにもcreateコマンドがあります。
これはNPMやGitHub、ローカルにあるテンプレートからプロジェクトを作成するコマンドです。

ターミナル
bun create テンプレート

もしあなたがViteのプロジェクトを初期化するなら、bun create viteコマンドが使えます。

パッケージ

Bunはパッケージマネージャを兼ね備えています。
これは非常に高速なので、1からプロジェクトを作るなら、速度目的でYarnなどを導入する必要はないかもしれません。

add

プロジェクトにパッケージ(NPMパッケージ or ローカル)を追加します。

例えばreactパッケージを追加してみます。

ターミナル
bun add --dev react

このコマンドでは以下のことをやってくれます。

  • package.jsondependenciesにパッケージを追加
    • --devオプション: パッケージをdevDependenciesに追加
  • 実際のnode_modulesにパッケージを追加
  • ロックファイル(bun.lockb)にパッケージを追加

install

package.jsonに書かれているパッケージをインストールします。

ターミナル
bun install

これは非常に高速です。
それを示すベンチマークはこちらで公開されています。

テスト

Bunにはテストランナーが付属しています。

テストコードはbun:testパッケージの関数を使うことで書けます。
以下はドキュメントから引用したテストコードのサンプルです。

math.test.ts
import { expect, test } from "bun:test";

test("2 + 2", () => {
  expect(2 + 2).toBe(4);
});

テストをTypeScriptで書く場合、型定義(@types/bunパッケージ)をインストールする必要があります。

追加は以下のコマンドでできます。

ターミナル
bun add --dev @types/bun

全てのテストはこちらのコマンドで実行できます。

ターミナル
bun test

なお、Bunにテストランナーが付属しているからといって、他のテストランナーが使えないというわけではありません。
BunにはNode.js互換があるので、JestやVitestなども動くと思います。たぶん。
(Bunはたまに未実装な機能がある)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?