node.js - 为没有开发依赖项的 nodejs 分发创建一个 zip 文件(捆绑)
问题描述
我写了一组函数,我想创建一个 zip 文件,其中包含生产所需的所有内容。所以我想排除所有用于 dev 的东西(Nothing from devDependencies
)。
为什么我需要创建 ZIP?我知道可以在服务器中安装依赖项,但是无服务器平台需要一个包含所有依赖项的 zip,以避免长时间启动(冷启动)。另外,我想将部署与 Terraform 集成。
问题是我发现谷歌搜索的所有解决方案都不会自动排除开发依赖和传递开发依赖。基本上,他们从node_modules
根目录中提取所有内容并制作一个 zip,包括生产不需要的东西,例如单元测试和用于开发的工具。
我看起来像:
- Scala 中的 sbt-assembly或sbt-native-packager。
- Java 中的Maven Shade 插件或Maven 程序集插件。
- Python 中的python3 setup.py sdist bdist_wheel。
重要提示:我不想要需要手动指定要排除的依赖项列表的解决方案。我有这些信息,package.json
并且该方法应该使用这些信息来知道要在 zip 文件中放入什么。
解决方案
通常,您不想打包任何包依赖项(node_modules
目录),因为在安装期间正在编译某些包(npm install
)。
如果您仍想这样做,我建议您考虑将其打包在docker images中。
您可以将文件保留在包之外,.npmignore
并利用npm pack
它来创建tar.gz
您可以交付的模块(例如,将其发布到 npm 注册表)。
根据您的 npm 模块的建议,您可能希望npx
从 github\npm\etc 中利用和执行您的模块。
推荐阅读
- spring - Spring session Redis 键的创建没有过期时间
- redux - 没有返回或分派的 Redux 操作
- php - 第二页会话变量不显示第一页的会话变量
- leaflet - 显示本地标记和更广泛区域的兴趣点标记的最佳实践?
- angular - 在没有 app.component.html 模板的情况下以角度区分页面
- r - mean() 函数莫名其妙地返回 NA
- excel - 在日期之前插入文本并为其应用自定义格式
- python - 如何在 4 个子图后增加 hspace 并仅添加一个颜色条
- python - Python、PHP 和 Wordpress:XAMPP、SiteGound SSH 和 Wordpress 输出之间的差异
- git - 简单的 git clone 会破坏许多具有幻像、不可重置的“已修改”状态(LF 相关?)的文件 - 如何修复本地、远程或新克隆?