AWS
Bundle Size

减小打包体积

Serverless 环境对打包体积很敏感,因为它必须下载并解压内容。为了尽可能减少冷启动时间,你应该移除 node_modules 中任何不必要的文件,或者在此 PR (opens in a new tab) 中报告有问题的开发库。

ℹ️

Next 14+ 不再在输出的 node_modules 中包含像 @swc, esbuild 等... 的开发依赖,所以 请尽快升级。

解压后的大小必须小于 262144000 字节

要识别占用过多空间(且不适合 serverless)的模块:

du -hs .open-next/server-function/node_modules/* | sort -rh

如果你的应用需要这个有问题的库,那么考虑将 api 的业务逻辑移动到它自己的 lambda 中,例如:/api/v2 => Api Lambda

ℹ️

有一个 PR (opens in a new tab) 旨在从输出中移除一些开发依赖 node_modules,但这需要更多的测试才能合并。

常见问题

Sharp

sharpImage Optimization 函数之外不需要,所以你不应该将它作为依赖。但如果你依赖 sharp,请确保为你的 lambda 使用正确的标志安装它。 例如:--arch=arm64 --platform=linux --target=18 --libc=glibc

pdfjs
  • 如果你需要使用 pdfjs,你应该使用 npm i pdfjs-dist--no-optional 安装它,因为可选依赖:canvas 大约占用 180MB。

  • 如果上述方法不起作用(或给出一些编译错误),你可以尝试:

  experimental: {
    outputFileTracingExcludes: {
      "*": ["node_modules/canvas"],
    },
  },
其他

如果有任何其他模块导致问题,请提交 issue 或在 discord 上告诉我们。