首页 > 解决方案 > 为没有开发依赖项的 nodejs 分发创建一个 zip 文件(捆绑)

问题描述

我写了一组函数,我想创建一个 zip 文件,其中包含生产所需的所有内容。所以我想排除所有用于 dev 的东西(Nothing from devDependencies)。

为什么我需要创建 ZIP?我知道可以在服务器中安装依赖项,但是无服务器平台需要一个包含所有依赖项的 zip,以避免长时间启动(冷启动)。另外,我想将部署与 Terraform 集成。

问题是我发现谷歌搜索的所有解决方案都不会自动排除开发依赖和传递开发依赖。基本上,他们从node_modules根目录中提取所有内容并制作一个 zip,包括生产不需要的东西,例如单元测试和用于开发的工具。

我看起来像:

重要提示:我不想要需要手动指定要排除的依赖项列表的解决方案。我有这些信息,package.json并且该方法应该使用这些信息来知道要在 zip 文件中放入什么。

标签: node.jsnpm

解决方案


通常,您不想打包任何包依赖项(node_modules目录),因为在安装期间正在编译某些包(npm install)。

如果您仍想这样做,我建议您考虑将其打包在docker images中。

您可以将文件保留在包之外,.npmignore并利用npm pack它来创建tar.gz您可以交付的模块(例如,将其发布到 npm 注册表)。

根据您的 npm 模块的建议,您可能希望npx从 github\npm\etc 中利用和执行您的模块。


推荐阅读