mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-21 21:25:11 +00:00
feat: export defineNuxtConfig
from nuxt3
and @nuxt/bridge
(#669)
This commit is contained in:
parent
6dfe0d129a
commit
dd73a8bcad
@ -31,18 +31,17 @@ npm install -D @nuxt/bridge@npm:@nuxt/bridge-edge
|
||||
yarn add --dev @nuxt/bridge@npm:@nuxt/bridge-edge
|
||||
```
|
||||
|
||||
Add `@nuxt/bridge` to `buildModules` inside `nuxt.config`:
|
||||
Update `nuxt.config` file:
|
||||
|
||||
```ts [nuxt.config.js]
|
||||
export default {
|
||||
buildModules: [
|
||||
'@nuxt/bridge'
|
||||
],
|
||||
import { defineNuxtConfig } from '@nuxt/bridge'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
bridge: {
|
||||
nitro: true,
|
||||
// vite: true
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
If you have a project with `target: 'static'`, update "build" script to use `nuxt generate`
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
// vite: true
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
})
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
})
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
})
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
vite: false
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
vite: true
|
||||
|
@ -2,3 +2,15 @@
|
||||
module.exports = function (...args) {
|
||||
return import('./dist/module.mjs').then(m => m.default.call(this, ...args))
|
||||
}
|
||||
|
||||
module.exports.defineNuxtConfig = (config = {}) => {
|
||||
if (config.bridge !== false) {
|
||||
if (!config.buildModules) {
|
||||
config.buildModules = []
|
||||
}
|
||||
if (!config.buildModules.find(m => m === '@nuxt/bridge')) {
|
||||
config.buildModules.push('@nuxt/bridge')
|
||||
}
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
@ -5,9 +5,10 @@
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"main": "./module.cjs",
|
||||
"types": "./dist/module.d.ts",
|
||||
"types": "./types.d.ts",
|
||||
"files": [
|
||||
"module.cjs",
|
||||
"types.d.ts",
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { createRequire } from 'module'
|
||||
import { defineNuxtModule, installModule, checkNuxtCompatibilityIssues } from '@nuxt/kit'
|
||||
import type { BridgeConfig } from '../types'
|
||||
import { setupNitroBridge } from './nitro'
|
||||
import { setupAppBridge } from './app'
|
||||
import { setupCAPIBridge } from './capi'
|
||||
@ -7,19 +8,6 @@ import { setupBetterResolve } from './resolve'
|
||||
import { setupGlobalImports } from './global-imports'
|
||||
import { setupTypescript } from './typescript'
|
||||
|
||||
export interface BridgeConfig {
|
||||
nitro: boolean
|
||||
vite: boolean
|
||||
app: boolean | {}
|
||||
capi: boolean | {}
|
||||
globalImports: boolean
|
||||
constraints: boolean
|
||||
postcss8: boolean
|
||||
swc: boolean
|
||||
resolve: boolean
|
||||
typescript: boolean
|
||||
}
|
||||
|
||||
export default defineNuxtModule({
|
||||
name: 'nuxt-bridge',
|
||||
configKey: 'bridge',
|
||||
@ -80,16 +68,3 @@ export default defineNuxtModule({
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
declare module '@nuxt/kit' {
|
||||
interface NuxtConfig {
|
||||
bridge?: Partial<BridgeConfig>
|
||||
}
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
declare module '@nuxt/types' {
|
||||
interface NuxtConfig {
|
||||
bridge?: Partial<BridgeConfig>
|
||||
}
|
||||
}
|
||||
|
27
packages/bridge/types.d.ts
vendored
Normal file
27
packages/bridge/types.d.ts
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
import type { NuxtConfig as _NuxtConfig } from '@nuxt/kit'
|
||||
|
||||
export interface BridgeConfig {
|
||||
nitro: boolean
|
||||
vite: boolean
|
||||
app: boolean | {}
|
||||
capi: boolean | {}
|
||||
globalImports: boolean
|
||||
constraints: boolean
|
||||
postcss8: boolean
|
||||
swc: boolean
|
||||
resolve: boolean
|
||||
typescript: boolean
|
||||
}
|
||||
|
||||
// TODO: Also inherit from @nuxt/types.NuxtConfig for legacy type compat
|
||||
export interface NuxtConfig extends _NuxtConfig {
|
||||
bridge?: Partial<BridgeConfig> | false
|
||||
}
|
||||
|
||||
declare module '@nuxt/kit' {
|
||||
interface ConfigSchema {
|
||||
bridge: BridgeConfig
|
||||
}
|
||||
}
|
||||
|
||||
export declare function defineNuxtConfig(config: NuxtConfig): NuxtConfig
|
@ -17,20 +17,6 @@ export const nuxtCtx = getContext<Nuxt>('nuxt')
|
||||
*/
|
||||
export const useNuxt = nuxtCtx.use
|
||||
|
||||
/**
|
||||
* This helper serves to add the correct typings for your `nuxt.config.js`.
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* import { defineNuxtConfig } from '@nuxt/kit'
|
||||
* export default defineNuxtConfig({
|
||||
* // your Nuxt config
|
||||
* })
|
||||
*/
|
||||
export function defineNuxtConfig (config: NuxtConfig) {
|
||||
return config
|
||||
}
|
||||
|
||||
export interface LoadNuxtOptions extends LoadNuxtConfigOptions {
|
||||
rootDir: string
|
||||
dev?: boolean
|
||||
|
@ -1,23 +1,19 @@
|
||||
import { ConfigSchema } from '../../schema/config'
|
||||
import { ConfigSchema as _ConfigSchema } from '../../schema/config'
|
||||
import { ModuleInstallOptions } from './module'
|
||||
import { NuxtHooks } from './hooks'
|
||||
|
||||
export interface TypedConfigSchema extends ConfigSchema {
|
||||
export interface ConfigSchema extends _ConfigSchema {
|
||||
hooks: NuxtHooks,
|
||||
modules: ModuleInstallOptions[]
|
||||
buildModules: ModuleInstallOptions[]
|
||||
|
||||
/**
|
||||
* Enable vite mode
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
vite: boolean | import('vite').InlineConfig
|
||||
[key: string]: any
|
||||
|
||||
// TODO: Move to schema when untyped supports type annotation
|
||||
vite: boolean | import('vite').InlineConfig
|
||||
}
|
||||
|
||||
export interface NuxtOptions extends TypedConfigSchema { }
|
||||
export interface NuxtOptions extends ConfigSchema { }
|
||||
|
||||
type DeepPartial<T> = { [P in keyof T]?: DeepPartial<T[P]> | T[P] }
|
||||
|
||||
export interface NuxtConfig extends DeepPartial<TypedConfigSchema> { }
|
||||
export interface NuxtConfig extends DeepPartial<ConfigSchema> { }
|
||||
|
10
packages/nitro/types/index.d.ts
vendored
10
packages/nitro/types/index.d.ts
vendored
@ -2,14 +2,8 @@ import './shims'
|
||||
import { NitroInput } from '../dist'
|
||||
|
||||
declare module '@nuxt/kit' {
|
||||
interface NuxtConfig {
|
||||
nitro?: NitroInput
|
||||
}
|
||||
}
|
||||
|
||||
declare module '@nuxt/types' {
|
||||
interface NuxtConfig {
|
||||
nitro?: NitroInput
|
||||
interface ConfigSchema {
|
||||
nitro: NitroInput
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { resolve } from 'pathe'
|
||||
import { createHooks } from 'hookable'
|
||||
import { loadNuxtConfig, LoadNuxtOptions, Nuxt, NuxtOptions, nuxtCtx, installModule, ModuleContainer, NuxtHooks } from '@nuxt/kit'
|
||||
import { loadNuxtConfig, LoadNuxtOptions, Nuxt, NuxtOptions, NuxtConfig, nuxtCtx, installModule, ModuleContainer, NuxtHooks } from '@nuxt/kit'
|
||||
import pagesModule from '../pages/module'
|
||||
import metaModule from '../meta/module'
|
||||
import componentsModule from '../components/module'
|
||||
@ -72,3 +72,7 @@ export async function loadNuxt (opts: LoadNuxtOptions): Promise<Nuxt> {
|
||||
|
||||
return nuxt
|
||||
}
|
||||
|
||||
export function defineNuxtConfig (config: NuxtConfig): NuxtConfig {
|
||||
return config
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ export interface MetaObject extends Record<string, any> {
|
||||
}
|
||||
|
||||
declare module '@nuxt/kit' {
|
||||
interface NuxtConfig {
|
||||
meta?: MetaObject,
|
||||
interface ConfigSchema {
|
||||
meta: MetaObject,
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
})
|
||||
|
2
test/fixtures/basic/nuxt.config.ts
vendored
2
test/fixtures/basic/nuxt.config.ts
vendored
@ -1,4 +1,4 @@
|
||||
import { defineNuxtConfig } from '@nuxt/kit'
|
||||
import { defineNuxtConfig } from 'nuxt3'
|
||||
|
||||
export default defineNuxtConfig({
|
||||
buildDir: process.env.NITRO_BUILD_DIR,
|
||||
|
9
test/fixtures/bridge/nuxt.config.ts
vendored
9
test/fixtures/bridge/nuxt.config.ts
vendored
@ -1,11 +1,10 @@
|
||||
import { defineNuxtConfig } from '@nuxt/bridge'
|
||||
|
||||
// @ts-ignore
|
||||
global.__NUXT_PREPATHS__ = (global.__NUXT_PREPATHS__ || []).concat(__dirname)
|
||||
|
||||
export default {
|
||||
export default defineNuxtConfig({
|
||||
components: true,
|
||||
buildModules: [
|
||||
'@nuxt/bridge'
|
||||
],
|
||||
serverMiddleware: [
|
||||
{
|
||||
handle (req, _res, next) {
|
||||
@ -19,4 +18,4 @@ export default {
|
||||
nitro: {
|
||||
output: { dir: process.env.NITRO_OUTPUT_DIR }
|
||||
}
|
||||
}
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user