Lzh on GitHub

定制预设

如果您想使用 Nitro 不支持的提供商,或者想修改现有提供商,您可以在项目中创建一个本地自定义预设。

自定义预设是本地文件,包含定义构建器配置的预设入口和运行时入口点。

自定义本地预设支持是一项实验性功能。

示例

请查看 nitrojs/nitro-preset-starter 获取一个即用型模板。

首先,我们必须在本地目录 preset/nitro.config.ts 中定义我们的预设入口点。

./preset/nitro.config.ts
import type { NitroPreset } from "nitropack";
import { fileURLToPath } from "node:url"

export default <NitroPreset>{
  // extends: "node-server", // 您可以扩展现有预设
  entry: fileURLToPath(new URL("./entry.ts", import.meta.url)),
  hooks: {
    compiled() {
      // ...
    },
  },
};

入口点将由您的服务器或提供商使用,您可以完全自定义其行为。

import "#internal/nitro/virtual/polyfill";

const nitroApp = useNitroApp();

export default {
  fetch(request: Request) {
    const url = new URL(request.url);
    return nitroApp.localFetch(url.pathname + url.search, {
      context: {},
      host: url.hostname,
      protocol: url.protocol,
      method: request.method,
      headers: request.headers,
      body: undefined,
    });
  },
};

然后,在您的 nitro 配置文件中,您可以使用您的自定义预设。

export default defineNitroConfig({
  preset: "./preset",
});

请直接参考 Nitro 源代码,以更好地理解预设和入口点。