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