[React] Override webpack config for create-react-app without ejection
The default service worker that comes with create-react-app doesn't allow for very much configuration. We'll replace that default service worker in two ways.
First, we'll create a blank service worker js file, and use that as our custom service worker.
Next, we'll re-write the default webpack config with react-app-rewired
, and utilize the InjectManifest
workbox webpack plugin. This will allow us to create a totally custom service worker that still allows us to use workbox, without ejecting our app.
Install:
"react-app-rewired": "^1.6.2", "react-scripts": "^2.1.1", "serve": "^10.1.1", "workbox-webpack-plugin": "^3.6.3"
Create a config-overrides.js in root folder:
Default create-react-app using 'GenerateSW' function, we want to override with 'InjectManifest' function.
/* config-overrides.js */ const WorkboxWebpackPlugin = require('workbox-webpack-plugin') module.exports = function override(config, env) { config.plugins = config.plugins.map(plugin => { if(plugin.constructor.name === 'GenerateSW') { return new WorkboxWebpackPlugin.InjectManifest({ swSrc: './src/sw.js', // point to the sw.js file we will create later swDest: 'service-worker.js' // will be generatedin pulbic folder }) } return plugin }) return config }
Update package.json:
"scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "build:serve": "serve -s build", "test": "react-app-rewired test", "eject": "react-scripts eject" },
Create src/sw.js:
workbox.skipWaiting();
workbox.clientsClaim();
Run:
npm run build
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2017-12-28 [Python] Histograms for analysis Daily return
2017-12-28 [React] Pass a function to setState in React
2017-12-28 [Recompose] Refactor React Render Props to Streaming Props with RxJS and Recompose
2017-12-28 [Recompose] Make Reusable React Props Streams with Lenses
2016-12-28 [GraphQL] Use GraphQL's List Type for Collections
2016-12-28 [GraphQL] Use GraphQL's Object Type for Basic Types
2016-12-28 [GraphQL] Create a GraphQL Schema