如何在执行build-administration.sh时禁用Chromium下载复用已有版本
Puppeteer Chromium自动下载禁用及已有版本复用方案
核心逻辑
Puppeteer安装阶段的Chromium下载逻辑由内置环境变量控制,无需修改源码、构建脚本或业务代码,即可直接关闭自动下载、指定复用外部已有的Chromium程序。
操作步骤
- 执行
npm install、运行build-administration.sh构建脚本前,先设置环境变量PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true。变量生效后puppeteer的install.js会直接跳过Chromium拉取流程,从根源上避免重复下载拖慢构建速度。 - 提前将版本匹配的Chromium存放到镜像内固定路径:你当前使用的
puppeteer@13.7.0适配Chromium版本为r982053,和日志中记录的下载版本完全一致,直接复用该版本即可,不会出现兼容性问题。 - 额外设置环境变量
PUPPETEER_EXECUTABLE_PATH,值为预存Chromium可执行文件的绝对路径。配置完成后Puppeteer运行时会直接调用该路径的浏览器程序,不会查找node_modules下默认的.local-chromium目录内容。
Dockware环境配置示例
如果通过Dockerfile构建镜像,直接在执行构建命令前声明环境变量即可:
# 关闭Puppeteer自动下载Chromium逻辑 ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true # 指定预存Chromium的可执行文件路径,按实际存放位置修改 ENV PUPPETEER_EXECUTABLE_PATH=/opt/build-cache/chromium-982053/chrome # 正常执行原有构建流程 RUN /var/www/html/bin/build-administration.sh
如果是临时进入容器执行构建,可以在执行命令前临时传入环境变量:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/opt/build-cache/chromium-982053/chrome \ ./build-administration.sh
优化注意事项
- 可以将r982053版本的Chromium直接预置到dockware基础镜像的固定缓存目录,后续所有构建任务都可以直接复用,无需重复拉取。
- 如果不想修改执行路径,也可以提前把下载好的Chromium目录放到
/var/www/html/vendor/shopware/administration/Resources/app/administration/node_modules/puppeteer/.local-chromium/linux-982053路径下,配合跳过下载的环境变量即可正常运行。但该方案依赖node_modules目录结构,npm依赖重装时容易被覆盖,更推荐使用指定外部执行路径的方案。 - 不要跨大版本复用Chromium,否则会出现Puppeteer API与浏览器内核不兼容的报错。
内容的提问来源于stack exchange,提问作者dnaumann
相关产品推荐
相关产品推荐

