【问题标题】:How to install a npm package while ignoring one of its dependencies?如何在忽略其中一个依赖项的情况下安装 npm 包?
【发布时间】:2021-11-15 23:35:53
【问题描述】:

我正在开发一个 AWS SAM 无服务器项目,使用 Node.js 编写的 Lambda 函数。

Lambda 执行环境已经提供了 AWS SDK,不需要将这个依赖推送到部署中。

aws-sdk 作为另一个包的嵌套依赖项出现时,问题就出现了。

例如,我需要aws-appsync,它又依赖于aws-sdk。 因此,部署规模太大。整个 aws-appsync 包及其依赖项重约 140mb,其中一个值得注意的部分是 AWS 开发工具包。在这种情况下,超过了最大部署大小,部署过程将失败。

我可以让 npm 安装一个包含所有依赖项的包,除了一个特定的依赖项吗?在这种情况下,我会从依赖项中排除 aws-sdk

【问题讨论】:

  • 您是说解压后的部署总大小超过 250MB?
  • 你是如何打包 Lambda 的?
  • 无服务器框架有插件可以解决这个问题。不确定是否有 SAM 的等效项。
  • 由于一些奇怪的情况,完全清理和依赖重新获取缩小了总包大小。对于这个项目,没有打包过程。

标签: amazon-web-services npm aws-lambda aws-sam


【解决方案1】:

一个简单的解决方案是将 aws-sdk 添加为 devDependencies 而不是正常的依赖项。在捆绑代码并上传之前,您可以在部署管道中运行 npm i --production。这将确保 devDependencies 在 node_modules 中不可用。 (如果它们已经存在,我认为它不会删除它们,因此如果您在本地执行此操作,则可能必须在运行 npm 命令之前删除 node_modules 文件夹)

【讨论】:

    猜你喜欢
    • 2018-01-17
    • 2018-01-13
    • 2018-06-03
    • 1970-01-01
    • 2017-10-31
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多