AWS
内部插件系统

OpenNext 内部使用 3 个不同的 esbuild 插件,根据某些条件(如 next 版本或使用的运行时)重新编译或修改源代码

OpenNext 替换插件

此插件用于将源代码中的某些代码替换为其他代码。

这是一个非常简单的使用示例:

openNextPlugin({
    // 要替换代码的目标文件
    target: /plugins\/default\.js/g,
    // 插件将在此处查找要替换的代码
    replacements: [require.resolve("./plugins/default.js")],
    // 这是要从目标文件中删除某些代码
    deletes: ["id1"],
  })
 
  // 通过使用(文件顶部的 import)注入任意代码:
 
  //#import
 
  import data from 'data'
  const datum = data.datum
 
  //#endImport
 
  替换代码:
 
  //#override id1
 
  export function overrideMe() {
     // 我将替换目标文件中的 "id1" 块
  }
 
  //#endOverride

OpenNext 解析插件

此插件用于避免在最终捆绑包中捆绑整个库。它将把覆盖项的动态导入替换为我们想要使用的那个。

这是一个非常简单的使用示例:

openNextResolvePlugin({
  overrides: {
    wrapper: "node",
    converter: "node",
  },
});

OpenNext Edge 插件

此插件用于正确编译为 edge 运行时构建的路由或中间件。

这是一个非常简单的使用示例:

openNextEdgePlugin({
  // .next 目录的路径
  nextDir: "next",
  // 我们将用于捆绑路由的 edgeFunctionHandler.js 文件的路径
  edgeFunctionHandlerPath: "./edgeFunctionHandler.js",
  // 来自中间件清单文件的 middlewareInfo
  middlewareInfo: middlewareInfo
  // 如果应用应该为 cloudflare workers 捆绑
  isInCloudflare: true
})