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

如何在不eject的情况下移除react-scripts中的未使用依赖?

嘿,我来帮你搞定这两个头疼的问题——不用 eject 就能移除 Jest 依赖,还能处理 Workbox 那个烦人的 Google Analytics 间接依赖,咱们一步步来:

一、移除 Jest 依赖(无需 eject)

不用 eject 也能彻底清理 Jest 相关内容,步骤很简单:

  • 先卸载所有 Jest 关联包:
    npm uninstall jest jest-watch-typeahead @testing-library/react @testing-library/jest-dom
    # 如果你用 yarn 的话:
    yarn remove jest jest-watch-typeahead @testing-library/react @testing-library/jest-dom
    
  • 删除项目里的测试文件:比如 src/App.test.js、src/setupTests.js,还有根目录的 __tests__ 文件夹(如果有的话)
  • 清理 package.json:把 scripts 里的 test、test:watch 这类测试脚本删掉;如果文件里有专门的 jest 配置块,也一并移除
  • 可选:清理包管理器缓存,避免残留文件干扰:
    npm cache clean --force
    # yarn 用户:
    yarn cache clean
    
二、移除 Workbox 中的 Google Analytics 间接依赖(无需 eject)

Create React App 默认的 Workbox 配置会自带 GA 相关的缓存规则,不用 eject 的话,我们可以用自定义配置工具覆盖默认设置,推荐用 craco(Create React App Configuration Override):

  1. 先安装 craco:
    npm install @craco/craco --save-dev
    # yarn 用户:
    yarn add @craco/craco --dev
    
  2. 在项目根目录创建 craco.config.js,写入自定义的 Workbox 配置(完全去掉 GA 相关逻辑):
    const WorkboxWebpackPlugin = require('workbox-webpack-plugin');
    
    module.exports = {
      webpack: {
        plugins: {
          // 移除 CRA 默认的 Workbox 插件
          remove: ['WorkboxWebpackPlugin.GenerateSW'],
          // 手动添加不带 GA 规则的 Workbox 配置
          add: [
            new WorkboxWebpackPlugin.GenerateSW({
              clientsClaim: true,
              skipWaiting: true,
              exclude: [/\.map$/, /asset-manifest\.json$/],
              // 只保留你需要的缓存规则,完全删掉 GA 相关配置
              runtimeCaching: [
                {
                  urlPattern: ({ url }) => url.origin === self.location.origin && url.pathname.startsWith('/static/'),
                  handler: 'CacheFirst',
                  options: {
                    cacheName: 'static-resources',
                  },
                },
                // 这里可以添加其他你需要的缓存规则,比如 API 请求缓存
              ],
            }),
          ],
        },
      },
    };
    
  3. 修改 package.json 里的启动脚本,替换成 craco 命令:
    "scripts": {
      "start": "craco start",
      "build": "craco build",
      "eject": "react-scripts eject"
    }
    
  4. 重启项目或者执行 build,新的 Workbox 配置就会生效,GA 相关的间接依赖也就被移除了。

如果不想用 craco,也可以用 react-app-rewired,核心思路都是一样的:覆盖默认的 Webpack 配置,替换掉带 GA 规则的 Workbox 插件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:17:31