码迷,mamicode.com
首页 > 移动开发 > 详细

[React] Override webpack config for create-react-app without ejection

时间:2018-12-28 22:22:32      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:def   pre   without   nts   ace   pts   rate   file   style   

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

 

[React] Override webpack config for create-react-app without ejection

标签:def   pre   without   nts   ace   pts   rate   file   style   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!