如何减小Puppeteer体积以解决Heroku平台Slug大小超出限制问题
Heroku Puppeteer 应用Slug超容优化方案
- 禁用内置Chromium重复下载
在Heroku应用环境变量中添加PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true,直接使用jontewks/puppeteer-heroku-buildpack提供的系统级Chromium,避免Puppeteer重复下载浏览器二进制文件,可直接减少100M+的占用空间。 - 替换为轻量Puppeteer版本
将项目依赖中的puppeteer替换为puppeteer-core,该包不含内置Chromium,本身体积比完整包小60M以上,启动时仅需指定executablePath: '/app/.apt/usr/bin/chromium-browser'调用buildpack提供的浏览器即可。 - 精简依赖和冗余文件
- 将所有非生产依赖(如代码检查工具、测试框架、构建工具等)全部移入
devDependencies,Heroku构建默认不会安装该分类下的包,可减少无效依赖占用 - 项目根目录新增
.slugignore文件,将文档、测试用例、本地配置文件等不需要部署的内容加入忽略列表 - 在
package.json中添加构建后清理钩子:
可额外清理出50M+的空间。"scripts": { "heroku-postbuild": "rm -rf node_modules/puppeteer/.local-chromium/*/locales/* && rm -rf node_modules/puppeteer/.local-chromium/*/swiftshader && rm -rf node_modules/**/docs node_modules/**/example" } - 将所有非生产依赖(如代码检查工具、测试框架、构建工具等)全部移入
- 服务拆分
若后续功能迭代后体积仍有超容风险,可将爬虫逻辑拆分为独立的无服务函数部署,主应用仅通过接口调用爬虫能力,Heroku上的主应用无需搭载浏览器相关依赖,slug体积可降至100M以内。
内容的提问来源于stack exchange,提问作者Kirian CAUMES
相关产品推荐
相关产品推荐

