我的无服务器部署包超过 100 MB,SLS 命令拒绝部署它

My Serverless deploy package is over 100 MB and the SLS command refuses to deploy it

尽管我的应用程序相当简单,但它以 107Mb 的 gzip 压缩大小进行部署,然后我进行了一些更改,使其变得如此之大以至于根本无法部署。我该怎么办?

1。减小 node_modules 目录

的大小

任何你不需要的东西——都可以。删除您的 node_modules/ 目录并重新安装以确保它是干净的。

2。真正区分依赖和开发依赖

任何你不需要运行时间的东西,标记为开发依赖,然后把

package:
  excludeDevDependencies: true

在你的 serverless.yml 中。您 运行 一次都不需要的东西包括编译器、类型库和... Node.

3。等等,节点?

是的,如果你像我一样,更喜欢在 Node/Express 中开发然后部署到 Serverless,请记住 Lambda 运行 在 Node 上有自己的版本,所以你的 Node 是一个开发者- 依赖。仅 Node 使用的东西也是如此,例如 ts-nodebody-parser.

4。包括而不是排除

serverless.yml应该包括你需要的东西,而不是排除你不需要的东西。我用 Typescript 编写(你也应该)并将我的 tsconfig.json 设置为将所有内容写入 build/,所以我在 serverless.yml 中的整个包语句是

package:
  excludeDevDependencies: true
  include:
    - build/**

不要添加 node_modules/** — 部署过程会自动执行此操作,如果您明确包含它,则会破坏 excludeDevDependencies 设置。

5。检查你的工作

您可以通过以下方式练习:

sls package
du -m -d 1 .serverless

第一条语句快速补包,然后停止;第二个列出了每个工件使用的兆字节。如果有一个 .zip 文件看起来太大,解压它然后使用 du more 来调查是什么占用了所有空间。

通过使用这些技术,我将 107Mb 的包压缩到了 10Mb。