[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

原文地址:https://www.cnblogs.com/Answer1215/p/10192806.html

时间: 2024-10-13 14:26:58

[React] Override webpack config for create-react-app without ejection的相关文章

React漫漫学习路之 利用Create React App命令创建一个React应用

所谓万事开头难,本文旨在为初探React的同学,建立第一个最基本的react应用. Create React App是Facebook官方的一个快速构建新的 React 单页面应用的脚手架工具,它可以帮你配置开发环境,以便你可以使用最新的 JavaScript 特性,还能提供很棒的开发体验,并为生产环境优化你的应用.(如果你使用过vue-cli构建vue应用,那么此处可类比) 话不多说,直接开始. 安装 全局安装create-react-app npm install -g create-rea

reactjs学习一(环境搭配react+es6+webpack热部署)

reactjs学习一(环境搭配react+es6+webpack热部署) reactjs今年在前端圈里很火,用了三四个月,感觉确实很适合前端开发人员使用,值得深入一下,所以这里记录一下我简单的学习过程,首先是react的环境,由于现在react的新版本已经很稳定了,所以推荐使用es6+webpack来搭建开发环境. 首先,安装nodejs,略过,安装gitbrach,略过,直接搜索到相对应软件的官网,下载最新正式版本的软件,然后就下一步下一步完成安装就可以了,很简单的过程,但是不容忽略,如有问题

npm scripts + webpack 实践经验(React、Nodejs)

最近用Webpack+npm scripts+Mongodb+Nodejs+React写了个后台项目,在用Webpack构建过程中遇到了许多坑,就写出来分享一下. 构建工具五花八门,想当年刚学会Grunt,Grunt就被淘汰了,取而代之的是Gulp,其任务流式的机制,有着逻辑清晰,灵活多变的特点,而且容易上手,相比Grunt真的要少写太多配置文件代码了,立马就学的风声水起,刚熟练Gulp,Webpack又如构建工具界的一颗新星冉冉升起,其独特的模块打包机制和各种各样好用的loader,让无数Co

react+redux+webpack+git技术栈

1 一.git bash here 2 mdkr 3 cnpm init -y 4 ls -a 5 ls -l 6 ls -la隐藏的也可查看 7 cat package.json 8 二.npm 9 npm i webpack-dev-server -g 10 全局:任何目录运行 11 本地:本地需要调用附带的插件 12 npm list 13 npm list -g 14 npm uninstall supervisor -g 全局删除 15 npm remove supervisor -g

react mobx webpack 使用案例

1.package.json: { "name": "wtest", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node server.js", "build

React使用——webpack

新建目录: demo(文件夹) --views(文件夹) --demo.html --app(文件夹) --components(文件夹) --demo.jsx --js(文件夹) --demo_1.js --demo_2.js --css(文件夹) --demo.css --main.js(入口文件) 编辑内容: 1.demo.html的内容为: <!DOCTYPE html> <html lang="en"> <head> <meta ch

React开发环境搭建(react,babel,webpack webpack-dev-server)

最终效果: 配置webpack 自动编译脚本, 内容更改后浏览器页面自动刷新,提高效率. 主要靠webpack 的watch 功能. npm 全局安装的包: webpack webpack-cli webpack-dev-server.   项目内2个文件 package.json. webpack.config.js 配置如下.截图不是最简单结构, 后面增加redux, react-redux 包加了点东西.  需要建立这样的目录后, npm install 就会根据package.json安

React +ES6 +Webpack入门

React +ES6 +Webpack入门 React已成为前端当下最热门的前端框架之一 , 其虚拟DOM和组件化开发让前端开发更富灵活性,而Webpack凭借它异步加载和可分离打包等优秀的特性,更为React的开发提供了便利.其优秀的特性不再赘述.本文将详细的记录react babel webpack的环境搭建,以及搭建的过程中遇到的一些坑. 一.新建React项目 1.如图为新建react项目结构,其中 entry.js放置react入口代码,index.js放置react组件代码,asse

React+ES6+Webpack深入浅出

React已成为前端当下最热门的前端框架之一 , 其虚拟DOM和组件化开发让前端开发更富灵活性,而Webpack凭借它异步加载和可分离打包等优秀的特性,更为React的开发提供了便利.其优秀的特性不再赘述.本文将详细的记录react babel webpack的环境搭建,以及搭建的过程中遇到的一些坑. 一.新建React项目 1.如图为新建react项目结构,其中 entry.js放置react入口代码,index.js放置react组件代码,assets文件是webpack打包之后生成文件的存