减少打包体积
无服务器环境对打包体积非常敏感,因为它需要下载并解压内容。为了尽可能减少冷启动时间,你应该移除 node_modules 中不必要的文件,或在这个 PR (opens in a new tab) 中报告有问题的开发库。
ℹ️
Next 14+ 版本不再在输出的 node_modules 中包含 @swc、esbuild 等开发依赖项,因此请尽快升级。
解压后大小必须小于 262144000 字节
要识别占用过多空间(且对无服务器不友好)的模块:
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
sharp
仅在 Image 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 上告知我们。