You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gatsby v4.23.x构建时manifest及图标被自动删除问题求助

Gatsby v4.23.x构建时manifest.webmanifest和icons被自动删除的问题排查与解决
  • 插件执行顺序与阶段冲突
    你当前的插件顺序是gatsby-plugin-manifest→gatsby-plugin-offline→gatsby-plugin-pwainstall,虽然符合基本顺序要求,但gatsby-plugin-pwainstall可能在内部执行了清理public目录下manifest相关文件的逻辑,或者与manifest插件的输出路径存在冲突。可以先暂时移除gatsby-plugin-pwainstall,重新构建验证是否还会出现文件被删除的情况,以此确认是否是该插件导致的问题。

  • Gatsby v4.23.x的已知构建bug
    Gatsby v4的4.23.x版本存在构建阶段资源清理的偶发问题:在执行"Building production JavaScript and CSS bundles"步骤时,内部的缓存清理逻辑可能误删已生成的manifest和图标文件。这个问题在v4.24.0及后续的补丁版本中已被修复,建议你升级到同大版本的最新补丁包(比如4.25.7)来解决。

  • 配置细节检查
    核对gatsby-plugin-manifest的配置:

    • 确认icon路径正确,避免使用动态生成的路径导致后续清理逻辑误判;
    • 检查output字段是否为默认的/,自定义路径可能与其他插件的路径处理冲突;
    • 查看gatsby-plugin-offline的workboxConfig,如果开启了cleanupOutdatedCaches,需确认其配置不会影响manifest文件的留存。

替代手动操作的可行修复方案

  1. 调整插件顺序:将gatsby-plugin-pwainstall移至gatsby-plugin-offline之前,或暂时移除该插件排查问题;
  2. 升级Gatsby版本:升级到v4的最新补丁版本,或直接迁移到v5(若项目允许);
  3. 通过gatsby-node.js自动复制资源:在项目根目录的gatsby-node.js中添加以下钩子,替代手动复制操作:
const fs = require('fs-extra');

exports.onPostBuild = async ({ reporter }) => {
  try {
    await fs.copy('./src/manifest.webmanifest', './public/manifest.webmanifest');
    await fs.copy('./src/icons', './public/icons');
    reporter.success('已自动复制manifest和icons到public目录');
  } catch (err) {
    reporter.error('复制manifest和icons失败', err);
  }
};

内容的提问来源于stack exchange,提问作者Akshay Shrivastav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:55:19