最近話題のZigで書かれているJavaScriptのRuntimeであるBunを試す。
Bunのインストール
インストールの仕方がcurlでスクリプト取得してbashで実行するタイプの方式。
curl https://bun.sh/install | bash
一応公式ページからinstall スクリプトの内容も見れるので、ローカルに落としてどんな処理を行っているかチェックしようと思ったが、コードフォーマッターとしていれたshell-formatだと美味く整形できなかった。
※リポジトリは下記
スクリプト自体が一行だからか?
まあ、あまりここに時間を使ってもしょうがないと思い、きっと大丈夫だろうと、とりあえず上のインストールコマンドをそのまま実行することにした。
インストール後、一度 source ~/.zshrc
で読み込んだ後、bun
コマンドを認識するようになった。
バージョンは下記の通り。
$bun --version 0.1.5
ちなみに公式ページからだと最新は 0.1.4
という表記になっているがこれは更新されていないだけかな?
Bunを使ってみる。
公式ページに記載されていた HTTPサーバのサンプルを実施してみる。
// http.js export default { port: 3000, fetch(request) { return new Response("Welcome to Bun!"); }, };
実行は
bun run http.js
http://localhost:3000
にアクセスして動作確認もできた。
Bunでnpmパッケージを試してみる
Bunではパッケージマネージャーも同梱されており、npmやyarnと同じように利用できるらしい。
自身が以前作成したこのnpmパッケージを動作確認のネタとして使わせてもらう。
bun install random-fruits-name
と打ったら下記のようなエラーが出てしまった。
error: MissingPackageJSON
bun could not find a package.json file.
package.json
がないとだめなようだ。
ひとまず yarn
を使ってインストール後、node_modules
とyarn.lock
を削除して、もう一度 bun install
コマンドを打ってみると、Bunの方でインストールしてくれた。
$bun install bun install v0.1.5 + random-fruits-name@1.9.5 1 packages installed [1.87s]
fruits-names.js
というファイル名で下記のような処理を記述する。
import getRandomFruitsName from 'random-fruits-name'; console.log(getRandomFruitsName()); console.log(getRandomFruitsName('en')); console.log(getRandomFruitsName('es')); console.log(getRandomFruitsName('ja')); console.log(getRandomFruitsName('pt')); console.log(getRandomFruitsName('nl')); console.log(getRandomFruitsName('fr')); console.log(getRandomFruitsName('de')); console.log(getRandomFruitsName('cs'));
実行してみる。
$ bun run fruits-names.js Eggfruit Indonesian Lime Higo びわ Jaca Witte Bes Icaque Quitte Borůvka
OK。
Bunの公式ページを見てみると、fetch, WebSocket, ReadableStream などの Web API がビルトインされていたり、TypeScriptとJSXがそのまま動いたり、色々と遊べそうなのでまた時間作って遊びたいところ。