Nitro
Nitro は、超高速 Web サーバーを構築するためのオープンソースの TypeScript フレームワークです。Nuxt はサーバー エンジンとして Nitro を使用します。 useNitro
を使用して Nitro インスタンスにアクセスし、addServerHandler
を使用してサーバー ハンドラーを追加し、addDevServerHandler
を使用して開発モードでのみ使用されるサーバー ハンドラーを追加し、addServerPlugin
を使用して Nitro のランタイム動作を拡張するプラグインを追加し、addPrerenderRoutes
を使用して Nitro によってプリレンダリングされるルートを追加できます。
addServerHandler
Nitro サーバー ハンドラーを追加します。サーバーミドルウェアまたはカスタムルートを作成する場合に使用します。
型
function addServerHandler (handler: NitroEventHandler): void
export interface NitroEventHandler {
handler: string;
route?: string;
middleware?: boolean;
lazy?: boolean;
method?: string;
}
パラメータ
handler
型: NitroEventHandler
必須: true
次のプロパティを持つハンドラーオブジェクト
handler
(必須)
型:string
イベントハンドラーへのパス。route
(オプション)
型:string
パスプレフィックスまたはルート。空の文字列が使用されている場合、ミドルウェアとして使用されます。middleware
(オプション)
型:boolean
これがミドルウェアハンドラーであることを指定します。ミドルウェアはすべてのルートで呼び出され、通常は次のハンドラーに渡すために何も返しません。lazy
(オプション)
型:boolean
遅延ローディングを使用してハンドラーをインポートします。method
(オプション)
型:string
ルーター メソッド マッチャー。ハンドラー名にメソッド名が含まれている場合は、デフォルト値として使用されます。
例
// https://github.com/nuxt-modules/robots
import { createResolver, defineNuxtModule, addServerHandler } from '@nuxt/kit'
export default defineNuxtModule({
setup(options) {
const resolver = createResolver(import.meta.url)
addServerHandler({
route: '/robots.txt'
handler: resolver.resolve('./runtime/robots.get.ts')
})
}
})
addDevServerHandler
開発モードでのみ使用される Nitro サーバー ハンドラーを追加します。このハンドラーは、本番ビルドから除外されます。
型
function addDevServerHandler (handler: NitroDevEventHandler): void
export interface NitroDevEventHandler {
handler: EventHandler;
route?: string;
}
パラメータ
handler
型: NitroEventHandler
必須: true
次のプロパティを持つハンドラーオブジェクト
handler
(必須)
型:string
イベントハンドラー。route
(オプション)
型:string
パスプレフィックスまたはルート。空の文字列が使用されている場合、ミドルウェアとして使用されます。
例
import { createResolver, defineNuxtModule, addDevServerHandler } from '@nuxt/kit'
export default defineNuxtModule({
setup() {
const resolver = createResolver(import.meta.url)
addDevServerHandler({
handler: () => {
return {
body: `Response generated at ${new Date().toISOString()}`
}
},
route: '/_handler'
})
}
})
// https://github.com/nuxt-modules/tailwindcss
import { joinURL } from 'ufo'
import { defineNuxtModule, addDevServerHandler } from '@nuxt/kit'
export default defineNuxtModule({
async setup(options) {
const route = joinURL(nuxt.options.app?.baseURL, '/_tailwind')
// @ts-ignore
const createServer = await import('tailwind-config-viewer/server/index.js').then(r => r.default || r) as any
const viewerDevMiddleware = createServer({ tailwindConfigProvider: () => options, routerPrefix: route }).asMiddleware()
addDevServerHandler({ route, handler: viewerDevMiddleware })
}
})
useNitro
Nitro インスタンスを返します。
ready
フックの後でのみ、useNitro()
を呼び出すことができます。型
function useNitro (): Nitro
export interface Nitro {
options: NitroOptions;
scannedHandlers: NitroEventHandler[];
vfs: Record<string, string>;
hooks: Hookable<NitroHooks>;
unimport?: Unimport;
logger: ConsolaInstance;
storage: Storage;
close: () => Promise<void>;
updateConfig: (config: NitroDynamicConfig) => void | Promise<void>;
}
例
// https://github.com/nuxt/nuxt/blob/4e05650cde31ca73be4d14b1f0d23c7854008749/packages/nuxt/src/core/nuxt.ts#L404
import { defineNuxtModule, useNitro, addPlugin, createResolver } from '@nuxt/kit'
export default defineNuxtModule({
setup(options, nuxt) {
const resolver = createResolver(import.meta.url)
nuxt.hook('ready', () => {
const nitro = useNitro()
if (nitro.options.static && nuxt.options.experimental.payloadExtraction === undefined) {
console.warn('Using experimental payload extraction for full-static output. You can opt-out by setting `experimental.payloadExtraction` to `false`.')
nuxt.options.experimental.payloadExtraction = true
}
nitro.options.replace['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction)
nitro.options._config.replace!['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction)
if (!nuxt.options.dev && nuxt.options.experimental.payloadExtraction) {
addPlugin(resolver.resolve(nuxt.options.appDir, 'plugins/payload.client'))
}
})
}
})
addServerPlugin
Nitro のランタイム動作を拡張するプラグインを追加します。
型
function addServerPlugin (plugin: string): void
パラメータ
plugin
型: string
必須: true
プラグインへのパス。プラグインは、Nitro インスタンスを引数として受け入れる関数をエクスポートする必要があります。
例
import { createResolver, defineNuxtModule, addServerPlugin } from '@nuxt/kit'
export default defineNuxtModule({
setup() {
const resolver = createResolver(import.meta.url)
addServerPlugin(resolver.resolve('./runtime/plugin.ts'))
}
})
addPrerenderRoutes
プリレンダリングされるルートを Nitro に追加します。
型
function function addPrerenderRoutes (routes: string | string[]): void
パラメータ
routes
型: string | string[]
必須: true
プリレンダリングするルートまたはルートの配列。
例
import { defineNuxtModule, addPrerenderRoutes } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'nuxt-sitemap',
configKey: 'sitemap',
},
defaults: {
sitemapUrl: '/sitemap.xml',
prerender: true,
},
setup(options) {
if (options.prerender) {
addPrerenderRoutes(options.sitemapUrl)
}
}
})
addServerImportsDir
Nitro による自動インポートのためにスキャンされるディレクトリを追加します。
型
function addServerImportsDir (dirs: string | string[], opts: { prepend?: boolean }): void
パラメータ
dirs
型: string | string[]
必須: true
Nitro によってスキャンされるように登録するディレクトリまたはディレクトリの配列
例
import { defineNuxtModule, createResolver, addServerImportsDir } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule',
},
setup(options) {
const resolver = createResolver(import.meta.url)
addServerImportsDir(resolver.resolve('./runtime/server/utils'))
}
})
addServerScanDir
Nitro によってスキャンされるディレクトリを追加します。サブディレクトリがチェックされ、~/server
フォルダーと同様に登録されます。
型
function addServerScanDir (dirs: string | string[], opts: { prepend?: boolean }): void
パラメータ
dirs
型: string | string[]
必須: true
サーバーディレクトリとして Nitro によってスキャンされるように登録するディレクトリまたはディレクトリの配列。
例
import { defineNuxtModule, createResolver, addServerScanDir } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule',
},
setup(options) {
const resolver = createResolver(import.meta.url)
addServerScanDir(resolver.resolve('./runtime/server'))
}
})