如何在不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):
- 先安装 craco:
npm install @craco/craco --save-dev # yarn 用户: yarn add @craco/craco --dev - 在项目根目录创建
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 请求缓存 ], }), ], }, }, }; - 修改
package.json里的启动脚本,替换成 craco 命令:"scripts": { "start": "craco start", "build": "craco build", "eject": "react-scripts eject" } - 重启项目或者执行 build,新的 Workbox 配置就会生效,GA 相关的间接依赖也就被移除了。
如果不想用 craco,也可以用 react-app-rewired,核心思路都是一样的:覆盖默认的 Webpack 配置,替换掉带 GA 规则的 Workbox 插件。
内容的提问来源于stack exchange,提问作者kyle
相关产品推荐
相关产品推荐

