How do I exclude url's from service worker scope in create react app, without having to eject?

前端 未结 1 867
花落未央
花落未央 2020-12-22 01:40

I need a way to exclude URLs from a service-worker scope in create-react-app without having to eject. The service-worker is being generated and I cannot see any way how I co

相关标签:
1条回答
  • 2020-12-22 02:20

    Here is my solution.

    Create a script outside of the src/ directory called rebuild-service-worker.js, with the following contents:

    "use strict";
    const FS = require("fs");
    let text = FS.readFileSync("./build/service-worker.js").toString();
    const start = text.indexOf("blacklist: [");
    const end = text.indexOf("\n", start) - 2;
    text = text.substring(0, end) + ",/^\\/admin/" + text.substring(end);
    FS.writeFileSync("./build/service-worker.js", text);
    

    As you can see, it adds a new item to the blacklist: [] array that is part of the Workbox configuration.

    Then, in your package.json build script, simply call it after react-scripts build like this:

    
      "scripts": {
        "build": "react-scripts build && node ./rebuild-service-worker",
        ...
    
    0 讨论(0)
提交回复
热议问题