当使用无服务器时,我如何只能打包生产依赖关系?

问题描述 投票:0回答:1

我使用的是 serverless 实现的lambda包。typescript. 我已经定义了 serverless.yml 我发现 serverless deploy 将压缩所有 node_modules 目录下,并以lambda文件的形式上传到s3 bucket。我的pakcage.json有 dependenciesdevDependencies 而且我想把开发部门排除在外。我知道我可以像下面这样做。

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

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

我能想到的另一个方法是在docker容器中运行构建和部署命令,其中只下载生产依赖。然而,这有点慢,因为每次我都要旋转一个容器,然后运行 "构建和部署 "命令。yarn install --only=production 命令来下载这些依赖关系。

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

aws-lambda serverless-framework serverless
1个回答
1
投票

我认为你可以排除这样的开发部署。

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: .
© www.soinside.com 2019 - 2024. All rights reserved.