From 4e6493db4da17eeaf31327524cef7b08f50cf18f Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Wed, 18 Mar 2026 15:12:21 +0900 Subject: [PATCH] feat: allow using local rolldown for development --- app/components/OutputContainer.vue | 38 +++++++++++++++++++----------- nuxt.config.ts | 14 +++++++++++ 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/app/components/OutputContainer.vue b/app/components/OutputContainer.vue index f5c2bbe..40b753c 100644 --- a/app/components/OutputContainer.vue +++ b/app/components/OutputContainer.vue @@ -27,20 +27,30 @@ const { data, status, error, refresh } = useAsyncData( loadingPhase.value = 'loading' - const [core, experimental, plugins, binding] = await Promise.all([ - import( - /* @vite-ignore */ `/api/proxy/@${version}/dist/index.browser.mjs` - ) as Promise, - import( - /* @vite-ignore */ `/api/proxy/@${version}/dist/experimental-index.browser.mjs` - ) as Promise, - import( - /* @vite-ignore */ `/api/proxy/@${version}/dist/plugins-index.browser.mjs` - ).catch(() => null), - import( - /* @vite-ignore */ `/api/proxy/@${version}/dist/rolldown-binding.wasi-browser.js` - ), - ]) + const [core, experimental, plugins, binding] = await Promise.all( + import.meta.env.VITE_USE_LOCAL_ROLLDOWN + ? [ + import('@rolldown/browser'), + import('@rolldown/browser/experimental'), + import('@rolldown/browser/plugins').catch(() => null), + // @ts-expect-error Custom alias + import('@rolldown/browser/rolldown-binding-wasi'), + ] + : [ + import( + /* @vite-ignore */ `/api/proxy/@${version}/dist/index.browser.mjs` + ) as Promise, + import( + /* @vite-ignore */ `/api/proxy/@${version}/dist/experimental-index.browser.mjs` + ) as Promise, + import( + /* @vite-ignore */ `/api/proxy/@${version}/dist/plugins-index.browser.mjs` + ).catch(() => null), + import( + /* @vite-ignore */ `/api/proxy/@${version}/dist/rolldown-binding.wasi-browser.js` + ), + ], + ) loadingPhase.value = 'bundling' diff --git a/nuxt.config.ts b/nuxt.config.ts index bc83f36..f54ecd8 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,8 +1,13 @@ +import process from 'node:process' +import { fileURLToPath } from 'node:url' + const crossOriginHeaders = { 'Cross-Origin-Embedder-Policy': 'require-corp', 'Cross-Origin-Opener-Policy': 'same-origin', } +process.env.VITE_USE_LOCAL_ROLLDOWN = '' // set to `1` to use local rolldown build for development + export default defineNuxtConfig({ modules: [ '@unocss/nuxt', @@ -18,8 +23,17 @@ export default defineNuxtConfig({ resolve: { alias: { path: 'pathe', + '@rolldown/browser/rolldown-binding-wasi': fileURLToPath( + new URL( + 'rolldown-binding.wasi-browser.js', + import.meta.resolve('@rolldown/browser'), + ), + ), }, }, + optimizeDeps: { + exclude: ['@rolldown/browser'], + }, build: { target: 'esnext', },