feat: allow selecting rspack builder

This commit is contained in:
Daniel Roe 2023-03-11 14:34:12 +00:00
parent 4e06a0acf8
commit 1c323a8810
6 changed files with 7 additions and 5 deletions

View File

@ -47,6 +47,7 @@
"@nuxt/test-utils": "workspace:*", "@nuxt/test-utils": "workspace:*",
"@nuxt/vite-builder": "workspace:*", "@nuxt/vite-builder": "workspace:*",
"@nuxt/webpack-builder": "workspace:*", "@nuxt/webpack-builder": "workspace:*",
"@nuxt/rspack-builder": "workspace:*",
"@nuxtjs/eslint-config-typescript": "^12.0.0", "@nuxtjs/eslint-config-typescript": "^12.0.0",
"@types/crawler": "^1.2.2", "@types/crawler": "^1.2.2",
"@types/node": "^18.15.5", "@types/node": "^18.15.5",

View File

@ -266,7 +266,7 @@ async function initNuxt (nuxt: Nuxt) {
} }
// Track components used to render for webpack // Track components used to render for webpack
if (nuxt.options.builder === '@nuxt/webpack-builder') { if (nuxt.options.builder === '@nuxt/webpack-builder' || nuxt.options.builder === '@nuxt/rspack-builder') {
addPlugin(resolve(nuxt.options.appDir, 'plugins/preload.server')) addPlugin(resolve(nuxt.options.appDir, 'plugins/preload.server'))
} }

View File

@ -7,7 +7,7 @@ export default defineUntypedSchema({
/** /**
* The builder to use for bundling the Vue part of your application. * The builder to use for bundling the Vue part of your application.
* *
* @type {'vite' | 'webpack' | { bundle: (nuxt: typeof import('../src/types/nuxt').Nuxt) => Promise<void> }} * @type {'vite' | 'webpack' | 'rspack' | { bundle: (nuxt: typeof import('../src/types/nuxt').Nuxt) => Promise<void> }}
*/ */
builder: { builder: {
$resolve: async (val, get) => { $resolve: async (val, get) => {
@ -17,6 +17,7 @@ export default defineUntypedSchema({
const map: Record<string, string> = { const map: Record<string, string> = {
vite: '@nuxt/vite-builder', vite: '@nuxt/vite-builder',
webpack: '@nuxt/webpack-builder', webpack: '@nuxt/webpack-builder',
rspack: '@nuxt/rspack-builder'
} }
return map[val] || val || (await get('vite') === false ? map.webpack : map.vite) return map[val] || val || (await get('vite') === false ? map.webpack : map.vite)
} }

View File

@ -101,7 +101,7 @@ export default defineUntypedSchema({
*/ */
inlineSSRStyles: { inlineSSRStyles: {
async $resolve(val, get) { async $resolve(val, get) {
if (val === false || (await get('dev')) || (await get('ssr')) === false || (await get('builder')) === '@nuxt/webpack-builder') { if (val === false || (await get('dev')) || (await get('ssr')) === false || (await get('builder')) === '@nuxt/webpack-builder' || (await get('builder')) === '@nuxt/rspack-builder') {
return false return false
} }
// Enabled by default for vite prod with ssr // Enabled by default for vite prod with ssr

View File

@ -88,7 +88,7 @@ export type NuxtConfigLayer = ConfigLayer<NuxtConfig & {
/** Normalized Nuxt options available as `nuxt.options.*` */ /** Normalized Nuxt options available as `nuxt.options.*` */
export interface NuxtOptions extends Omit<ConfigSchema, 'builder'> { export interface NuxtOptions extends Omit<ConfigSchema, 'builder'> {
sourcemap: Required<Exclude<ConfigSchema['sourcemap'], boolean>> sourcemap: Required<Exclude<ConfigSchema['sourcemap'], boolean>>
builder: '@nuxt/vite-builder' | '@nuxt/webpack-builder' | { bundle: (nuxt: Nuxt) => Promise<void> } builder: '@nuxt/vite-builder' | '@nuxt/webpack-builder' | '@nuxt/rspack-builder' | { bundle: (nuxt: Nuxt) => Promise<void> }
_layers: NuxtConfigLayer[] _layers: NuxtConfigLayer[]
$schema: SchemaDefinition $schema: SchemaDefinition
} }

View File

@ -1,3 +1,3 @@
export default defineNuxtConfig({ export default defineNuxtConfig({
builder: 'rspack'
}) })