TurborepoでもBun.shが対応されたっぽいので、
BunのqorkspaceでNuxt3を試してみたときに備忘録(*´ω`*)
Turborepo now has beta support for Bun.
— Turbo (@turborepo) September 15, 2023
◆ Run `bun i -g turbo@latest`
◆ Run `bunx create-turbo@latest`
If you have previously installed `turbo` globally, upgrade using the same package manager as before.https://t.co/VXqQSOs7hQ pic.twitter.com/OwhqOYEDnQ
ただ、Turborepoのドキュメントにはbunに関しての説明がないので、
ちょっと困った。。
ディレクトリ構成
ディレクトリ構成はこんな感じ。
- workspaces/ - nuxt-app/ - nuxt.config.ts - package.json - bun.lockb - package.json - turbo.json
workspaceの設定
Bunのworkspace機能は、npmと同じ感じで、
pakcage.jsonのworkspaces
で設定する。
// package.json { "name": "@myapp/monorepo", "private": true, "workspaces": ["workspaces/*"], "scripts": { "build": "turbo run build", "dev": "turbo run dev" }, "devDependencies": { "turbo": "^1.10.14" }, "packageManager": "bun@1.0.3" }
基本的にはTurborepoのnpm workspacesと同じ感じで設定。
packageManager
にはbun@
を設定しておくと、
bunのlockfile(bun.lockb
)を使ってくれるようになるよう。
turborepoの設定
build
とdev
が使えるように、
turbo.json
を用意しておく。
// turbo.json { "$schema": "https://turbo.build/schema.json", "pipeline": { "build": { "dependsOn": ["^build"] }, "dev": { "cache": false, "persistent": true } } }
nuxt-appの設定
Nuxtではbunを使ったinstallが書かれているので、
その形で進めればOK
$ bunx nuxi@latest init <project-name>
このままだと、Nuxtで使ってるサーバがNode.jsのまま。
// nuxt-app/.output/nitro.json { "date": "2023-09-29T06:26:55.564Z", "preset": "node-server", "commands": { "preview": "node ./server/index.mjs" } }
Bunを利用するようにpresetを変更しておく。
// nuxt-app/nuxt.config.ts
export default defineNuxtConfig({
+ nitro: { preset: "bun" },
devtools: { enabled: true },
});
設定してからbun run build
を実行すると、
bunを利用したnitro.json
を出力してくれる。
// nuxt-app/.output/nitro.json { "date": "2023-09-29T06:29:42.542Z", "preset": "bun", "commands": { "preview": "bun run ./server/index.mjs" } }
corepackのBun対応状況
現時点ではまだ未対応っぽいけど、対応されそう。
Turborepo側でそれについても書かれていた。
We're intentionally breaking the rules about packageManager. That warning does not introduce bugs and can be safely ignored.
GCPのBuildpackについて
現時点ではBunについては書かれていない。
ただ、Dockerイメージは公開されているので、
こんな感じでイメージを作れば良さそう。
FROM oven/bun:latest COPY package.json ./ COPY bun.lockb ./ COPY src ./ RUN bun install
Firebaseについて
firebaseでissueを検索すると、いくつか見つかる。
firebase-adminとかはまだ未対応が残ってるっぽい。
Cloud Functionsとかもあるので、まだ気になるところ。。
以上!! すこしずつ対応されているので、GCPやFirebaseのほうも期待(*´ω`*)