Categories
Tags
Alamofire Android AppStoreConnect AWS Bun C++ cAdvisor CFW Cloudflare Cloudflare Access Cloudflare KV Cloudflare Tunnel Cloudflare Workers D1 Deno DevContainer Discord Docker ECR ECS Edizon Emulator EmuMMC Fastlane Firestore Frida Ghidra Git GitHub GitHub Actions GitLab GPG Grafana HACGUI Heroku Homebrew Hono IDA Pro iOS IPSwitch Jailbreak Javascript Jotai JSON JWT LanPlay Linode macOS Mirakurun MongoDB NestJS NextJS Nintendo Nintendo Switch NodeJS PHP PostgreSQL Prisma Programming Prometheus Python React Realm RealmSwift Ruby Salmon Run Salmonia3+ Shogi Sideload Snap Splatoon Splatoon2 Splatoon3 SSH Stable Diffusion Starlight Swift Swift Package SwiftUI Switch TensorRT Turf War Typescript TypeScript Ubuntu Ubuntu Server Vite VNC VPN VSCode Vue WARP Wireguard XCode Xcode yarn zsh 家電 横歩取り
583 words
3 minutes
Bunでサポートされていないもの
脱NodeJSにはまだ早い
BunはNodeJSに代わる高速なJavaScriptランタイムで、環境によっては完全にNodeJSを利用しないような状態にすることもできますが、一方でフレームワークあるいはライブラリの依存の問題からNodeJSとの関係を断ち切れないものがあります。
普段、あまり気にすることがなかったのですが開発途中であれこれ動かないじゃんと気づいたことがあったのでそれをメモします。
NestJS
一応サポートはされているっぽいのだが、NestJS+SWCで十分に高速なので完全な脱NodeJSはしなくても良い気はする。
特に、Prismaと連携するような場合にはPrismaがNodeJSが必要になってくるので切っても切れない関係になっている。
Wrangler
Cloudflare謹製のCLIツールだが機能の一部でPerformanceResourceTiming
が使われており、これがBunに実装されていないため動作しない。
Karma, Webpack, Puppeteer
複雑怪奇な構造になっているのでどこが原因かはわからないのだがPuppeteerを使ってテストを実行したところBun環境では動かなかった。
webpack was not included as a framework in karma configuration, setting this automatically...
17 05 2024 22:44:10.361:ERROR [karma-server]: Server start failed on port 9876: Error: No provider for "proxies"! (Resolving: webServer -> proxies)
try-puppeteer-in-bunなんていうものもあるので、こっちを利用したほうがいいのかもしれない。
Bun + NodeJS
じゃあどうすればいいんですか?
諦めてNodeJSを使いましょう。
ランタイムとして使うのではなく単にバンドラとかトランスパイラとして利用すればいい。
TypeScriptをそのままトランスパイルして実行できるし、ライブラリのインストールは速いしでそういう意味でも利用価値は高い。
FROM oven/bun:1.1.7
COPY --from=node:20.13.1 /usr/local/bin/node /usr/local/bin/node
COPY --from=node:20.13.1 /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN ln -fs /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm
RUN ln -fs /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npx
USER bun
WORKDIR /home/bun/app
CMD ["/bin/bash"]
例えばBunとNodeJSが融合したような環境がつくりたければ上のようにすればよい。
こうするとBunで実行できない機能があればNodeJSのAPIが利用される。
記事は以上。
Bunでサポートされていないもの
https://fuwari.vercel.app/posts/2024/05/bun/