nuxt logo

ドキュメント翻訳(非公式)

Nitro

Nuxt Kitは、Nitroを扱うためのユーティリティを提供します。これらの関数を使用して、サーバーハンドラー、プラグイン、プリレンダールートを追加できます。

Nitroは、超高速なウェブサーバーを構築するためのオープンソースのTypeScriptフレームワークです。NuxtはそのサーバーエンジンとしてNitroを使用しています。useNitroを使用してNitroインスタンスにアクセスし、addServerHandlerでサーバーハンドラーを追加し、addDevServerHandlerで開発モードでのみ使用されるサーバーハンドラーを追加し、addServerPluginでNitroのランタイム動作を拡張するプラグインを追加し、addPrerenderRoutesでNitroによってプリレンダーされるルートを追加できます。

addServerHandler

Nitroサーバーハンドラーを追加します。サーバーミドルウェアやカスタムルートを作成したい場合に使用します。

使用法

import { createResolver, defineNuxtModule, addServerHandler } from '@nuxt/kit'

export default defineNuxtModule({
  setup(options) {
    const { resolve } = createResolver(import.meta.url)

    addServerHandler({
      route: '/robots.txt',
      handler: resolve('./runtime/robots.get')
    })
  }
})

function addServerHandler (handler: NitroEventHandler): void

パラメータ

handler: 以下のプロパティを持つハンドラーオブジェクト:

プロパティ必須説明
handlerstringtrueイベントハンドラーへのパス。
routestringfalseパスプレフィックスまたはルート。空文字列が使用された場合、ミドルウェアとして使用されます。
middlewarebooleanfalseこれはミドルウェアハンドラーであることを指定します。ミドルウェアはすべてのルートで呼び出され、通常は次のハンドラーに渡すために何も返さないべきです。
lazybooleanfalseハンドラーをインポートするために遅延読み込みを使用します。これは、ハンドラーをオンデマンドでのみ読み込みたい場合に便利です。
methodstringfalseルーターメソッドマッチャー。ハンドラー名にメソッド名が含まれている場合、それがデフォルト値として使用されます。

基本的な使用法

addServerHandlerを使用して、モジュールからサーバーハンドラーを追加できます。

import { createResolver, defineNuxtModule, addServerHandler } from '@nuxt/kit'

export default defineNuxtModule({
  setup(options) {
    const { resolve } = createResolver(import.meta.url)

    addServerHandler({
      route: '/robots.txt',
      handler: resolve('./runtime/robots.get')
    })
  }
})

/robots.txtにアクセスすると、次のレスポンスが返されます:

User-agent: *
Disallow: /

addDevServerHandler

開発モードでのみ使用されるNitroサーバーハンドラーを追加します。このハンドラーは本番ビルドから除外されます。

使用法

import { defineEventHandler } from 'h3'
import { createResolver, defineNuxtModule, addDevServerHandler } from '@nuxt/kit'

export default defineNuxtModule({
  setup() {
    addDevServerHandler({
      handler: defineEventHandler(() => {
        return {
          body: `Response generated at ${new Date().toISOString()}`
        }
      }),
      route: '/_handler'
    })
  }
})

// @errors: 2391
import type { NitroDevEventHandler } from 'nitropack'
// ---cut---
function addDevServerHandler (handler: NitroDevEventHandler): void

パラメータ

handler: 以下のプロパティを持つハンドラーオブジェクト:

プロパティ必須説明
handlerEventHandlertrueイベントハンドラー。
routestringfalseパスプレフィックスまたはルート。空文字列が使用された場合、ミドルウェアとして使用されます。

基本的な使用法

場合によっては、開発目的で特定のサーバーハンドラーを作成したいことがあります。例えば、Tailwindの設定ビューアーなどです。

import { joinURL } from 'ufo'
import { defineNuxtModule, addDevServerHandler } from '@nuxt/kit'

export default defineNuxtModule({
  async setup(options, nuxt) {
    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インスタンスを返します。

useNitro()readyフックの後でのみ呼び出すことができます。

Nitroインスタンスの設定への変更は適用されません。

使用法

import { defineNuxtModule, useNitro } from '@nuxt/kit'

export default defineNuxtModule({
  setup(options, nuxt) {
    const resolver = createResolver(import.meta.url)

    nuxt.hook('ready', () => {
      const nitro = useNitro()
      // Nitroインスタンスで何かを行う
    })
  }
})

function useNitro (): Nitro

addServerPlugin

Nitroのランタイム動作を拡張するプラグインを追加します。

Nitroプラグインについての詳細はNitroドキュメントを参照してください。

使用法

import { createResolver, defineNuxtModule, addServerPlugin } from '@nuxt/kit'

export default defineNuxtModule({
  setup() {
    const { resolve } = createResolver(import.meta.url)
    addServerPlugin(resolve('./runtime/plugin.ts'))
  }
})

function addServerPlugin (plugin: string): void

パラメータ

プロパティ必須説明
pluginstringtrueプラグインへのパス。プラグインは、Nitroインスタンスを引数として受け取るデフォルト関数をエクスポートする必要があります。

import { createResolver, defineNuxtModule, addServerPlugin } from '@nuxt/kit'

export default defineNuxtModule({
  setup() {
    const { resolve } = createResolver(import.meta.url)
    addServerPlugin(resolve('./runtime/plugin.ts'))
  }
})

addPrerenderRoutes

Nitroにプリレンダーされるルートを追加します。

使用法

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)
    }
  }
})

function addPrerenderRoutes (routes: string | string[]): void

パラメータ

プロパティ必須説明
routesstring | string[]trueプリレンダーするルートまたはルートの配列。

addServerImportsDir

Nitroによって自動インポートされるディレクトリを追加します。

使用法

import { defineNuxtModule, createResolver, addServerImportsDir } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'my-module',
    configKey: 'myModule',
  },
  setup(options) {
    const { resolve } = createResolver(import.meta.url)
    addServerImportsDir(resolve('./runtime/server/composables'))
  }
})

function addServerImportsDir (dirs: string | string[], opts: { prepend?: boolean }): void

パラメータ

プロパティ必須説明
dirsstring | string[]trueNitroによってスキャンされるディレクトリまたはディレクトリの配列。
opts{ prepend?: boolean }falseインポートディレクトリのオプション。prependtrueの場合、ディレクトリはスキャンリストの先頭に追加されます。

addServerImportsDirを使用して、Nitroによってスキャンされるディレクトリを追加できます。これは、カスタムサーバーディレクトリから関数を自動インポートしたい場合に便利です。

import { defineNuxtModule, createResolver, addServerImportsDir } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'my-module',
    configKey: 'myModule',
  },
  setup(options) {
    const { resolve } = createResolver(import.meta.url)
    addServerImportsDir(resolve('./runtime/server/composables'))
  }
})

その後、サーバーコードでuseApiSecret関数を使用できます:

runtime/server/api/hello.ts
const useApiSecret = (): string => ''
// ---cut---
export default defineEventHandler(() => {
  const apiSecret = useApiSecret()
  // apiSecretを使用して何かを行う
})

addServerScanDir

Nitroによってスキャンされるディレクトリを追加します。サブディレクトリをチェックし、~/serverフォルダと同様に登録されます。

~/server/api~/server/routes~/server/middleware~/server/utilsのみがスキャンされます。

使用法

import { defineNuxtModule, createResolver, addServerScanDir } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'my-module',
    configKey: 'myModule',
  },
  setup(options) {
    const { resolve } = createResolver(import.meta.url)
    addServerScanDir(resolve('./runtime/server'))
  }
})

function addServerScanDir (dirs: string | string[], opts: { prepend?: boolean }): void

パラメータ

プロパティ必須説明
dirsstring | string[]trueNitroによってサーバーディレクトリとしてスキャンされるディレクトリまたはディレクトリの配列。
opts{ prepend?: boolean }falseインポートディレクトリのオプション。prependtrueの場合、ディレクトリはスキャンリストの先頭に追加されます。

addServerScanDirを使用して、Nitroによってスキャンされるディレクトリを追加できます。これは、カスタムサーバーディレクトリを追加したい場合に便利です。

import { defineNuxtModule, createResolver, addServerScanDir } from '@nuxt/kit'

export default defineNuxtModule({
  meta: {
    name: 'my-module',
    configKey: 'myModule',
  },
  setup(options) {
    const { resolve } = createResolver(import.meta.url)
    addServerScanDir(resolve('./runtime/server'))
  }
})

その後、サーバーコードでhello関数を使用できます。

runtime/server/api/hello.ts
function hello() {
  return 'Hello from server utils!'
}
// ---cut---
export default defineEventHandler(() => {
  return hello() // Hello from server utils!
})