You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Netlify函数构建包中排除指定Node模块?

Netlify函数构建时排除指定模块的方法

针对包体积超限问题,按以下方案配置即可:

1. 根目录netlify.toml配置(推荐,零代码改动)

显式指定Node打包器为esbuild(Netlify当前默认打包器,显式声明避免版本差异导致配置失效),并将不需要打包的Lambda内置模块标记为外部依赖,构建时不会将其打入函数包:

[functions]
node_bundler = "esbuild"
# 替换为你的实际函数名,比如PDF渲染函数名为render-pdf就填对应值
[functions."render-pdf"]
external_node_modules = ["aws-sdk", "aws-sdk/*", "@aws-sdk/*"]

配置后所有AWS SDK相关的导入都会被标记为外部引用,运行时直接调用Lambda环境内置的SDK,不会占用包体积。

2. 自定义构建脚本配置(适用于自定义打包流程)

如果没有用Netlify默认的自动打包,而是自行编写esbuild脚本构建函数,直接在配置中添加external字段声明外部模块即可:

const esbuild = require('esbuild')

esbuild.build({
  entryPoints: ['./src/render-pdf.js'],
  bundle: true,
  outfile: './.netlify/functions/render-pdf/render-pdf.js',
  platform: 'node',
  target: 'node18', // 和Netlify后台配置的函数Node.js运行时版本保持一致
  external: ['aws-sdk', '@aws-sdk/*'] // 所有AWS SDK模块不打入包内
})

3. 兜底优化方案

如果配置完仍有冗余SDK文件被打包,可以直接把项目package.json中所有aws-sdk相关的依赖从dependencies节点移到devDependencies节点:

  • 本地开发时devDependencies下的包可以正常调用,不影响开发调试
  • Netlify生产构建默认执行npm install --production,不会安装devDependencies下的依赖,从根源上避免SDK文件被识别打包

验证方法

本地执行netlify functions:build命令完成构建后,到项目.netlify/functions/目录下找到对应函数的zip压缩包,解压后确认包内无AWS SDK相关文件,且整体体积小于50MB即可正常部署。

注意:请提前确认Netlify函数配置的Node.js运行时版本内置的AWS SDK版本,和代码中调用的API兼容,避免运行时报错。

内容的提问来源于stack exchange,提问作者Soviut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 09:51:30