我使用的是 serverless
实现的lambda包。typescript
. 我已经定义了 serverless.yml
我发现 serverless deploy
将压缩所有 node_modules
目录下,并以lambda文件的形式上传到s3 bucket。我的pakcage.json有 dependencies
和 devDependencies
而且我想把开发部门排除在外。我知道我可以像下面这样做。
package:
exclude:
- node_modules/**
- '!node_modules/node-fetch/**'
但我必须一个一个地排除它们,这不是一个好主意。
我能想到的另一个方法是在docker容器中运行构建和部署命令,其中只下载生产依赖。然而,这有点慢,因为每次我都要旋转一个容器,然后运行 "构建和部署 "命令。yarn install --only=production
命令来下载这些依赖关系。
所以我正在寻找一个更好的解决方案来解决这个问题。
我认为你可以排除这样的开发部署。
package:
excludeDevDependencies: true
旋转docker并在里面安装deps其实是一个更好的主意。尽管在部署前旋转docker需要更多的时间。有些deps可能有编译过的二进制文件,如果你在本地yarn安装它们然后部署,它们可能在远程服务器上无法工作。
除此之外,你有没有尝试过使用包裹捆绑器,并使用 serverless-simple-parcel
插件?这里是它的一个配置示例(进入serverless.yml到自定义块)。
custom:
parcel:
entries:
- file: src/handler.ts
target: node
outFile: handler.js
options:
publicUrl: .