如何排除无服务器中的嵌套文件夹?
How can I exclude nested folders in serverless?
我正在使用 serverless
框架将 lambda 部署到 AWS。我发现我的项目中有许多嵌套的 node_modules
文件夹,它们占用超过 250MB 的数据。我认为它们来自具有冲突版本依赖项的第三方依赖项。如何排除 serverless.yml 中所有嵌套 node_modules
的包装?
package:
exclude:
- nodejs/node_modules/aws-sdk/**
- nodejs/node_modules/**/node_modules
我已经试过上面的配置,但并没有排除它们。
在更大的 node_modules
目录中排除 node_modules
文件夹不是最好的方法,因为这最终会破坏所涉及的包含模块(在这种情况下,它们可能不存在于全部)。
最好的办法是使用 serverless-webpack. Webpack includes tree shaking,这将大大缩小部署包的大小。
以上内容应该足够了,但您可以通过在 serverless.yml
中包含以下内容来进一步优化:
package:
individually: true
excludeDevDependencies: false
这会为您的每个 lambda 表达式创建单独的部署包,并排除所有开发依赖项。 (它们是不相关的,所以如果您愿意,您可以只使用一个或另一个。)您在问题中只提到了一个 lambda,但考虑到 node_modules
的大小,我猜您确实有多个 lambda。
如果你只有一个 lambda,它可能会很大,所以我建议将它拆分成多个由 step function 协调的较小的 lambda。 Serverless 也处理步骤函数的部署,因此您可以在 serverless.yml
文件中很好地一起管理所有资源。
我正在使用 serverless
框架将 lambda 部署到 AWS。我发现我的项目中有许多嵌套的 node_modules
文件夹,它们占用超过 250MB 的数据。我认为它们来自具有冲突版本依赖项的第三方依赖项。如何排除 serverless.yml 中所有嵌套 node_modules
的包装?
package:
exclude:
- nodejs/node_modules/aws-sdk/**
- nodejs/node_modules/**/node_modules
我已经试过上面的配置,但并没有排除它们。
在更大的 node_modules
目录中排除 node_modules
文件夹不是最好的方法,因为这最终会破坏所涉及的包含模块(在这种情况下,它们可能不存在于全部)。
最好的办法是使用 serverless-webpack. Webpack includes tree shaking,这将大大缩小部署包的大小。
以上内容应该足够了,但您可以通过在 serverless.yml
中包含以下内容来进一步优化:
package:
individually: true
excludeDevDependencies: false
这会为您的每个 lambda 表达式创建单独的部署包,并排除所有开发依赖项。 (它们是不相关的,所以如果您愿意,您可以只使用一个或另一个。)您在问题中只提到了一个 lambda,但考虑到 node_modules
的大小,我猜您确实有多个 lambda。
如果你只有一个 lambda,它可能会很大,所以我建议将它拆分成多个由 step function 协调的较小的 lambda。 Serverless 也处理步骤函数的部署,因此您可以在 serverless.yml
文件中很好地一起管理所有资源。