使用无服务器时如何仅打包生产依赖项



我正在使用serverless来打包由typescript实现的lambda。我已经定义了serverless.yml,我发现serverless deploy将压缩所有目录node_modules并作为 lambda 文件上传到 s3 存储桶。我的 pakcage.json 有dependenciesdevDependencies,我想排除开发部门。我知道我可以做如下事情:

package:
exclude:
- node_modules/**
- '!node_modules/node-fetch/**'

但我必须一一排除它们,这不是一个好主意。

我能想到的另一种方法是在仅下载生产依赖项的 docker 容器中运行构建和部署命令。但是,它有点慢,因为每次我都必须旋转一个容器并运行yarn install --only=production命令来下载这些依赖项。

所以我正在寻找更好的解决方案来解决这个问题。

我认为您可以像这样排除开发部门。

package:
excludeDevDependencies: true

启动 docker 并从内部启动 deps 实际上是一个更好的主意。尽管在部署之前需要更多时间来启动它。某些 deps 可能已经编译了二进制文件,如果您在本地安装它们然后部署,它们可能无法在远程服务器上工作。

除此之外,您是否尝试过包裹捆绑器和serverless-simple-parcel插件? 下面是它的示例配置(进入 serverless.yml 到自定义块中(:

custom:
parcel:
entries:
- file: src/handler.ts
target: node
outFile: handler.js
options:
publicUrl: .

相关内容

  • 没有找到相关文章

最新更新