Как изменить пути предварительного кэширования для WorkboxPlugin? (Используя Jigsaw Php-Framework)

Моя проблема в том, что пути не установлены правильно. Например, в service-worker.js он создает:

importScripts(
  "/precache-manifest.5f7aa7298db0e8d002e09a10e9d6d1b1.js"
);

но поскольку я использую Jigsaw Framework, а общедоступное местоположение отличается, оно должно быть

importScripts(
  "/assets/build/precache-manifest.5f7aa7298db0e8d002e09a10e9d6d1b1.js"
);

То же самое и с самим precache-файлом, все пути неверны:

self.__precacheManifest = (self.__precacheManifest || []).concat([
  {
    "revision": "43301cc5590faa3a374f",
    "url": "//js/main.js"
  },
  {
    "revision": "43301cc5590faa3a374f",
    "url": "/css/main.css"
  },

Должно быть

self.__precacheManifest = (self.__precacheManifest || []).concat([
  {
    "revision": "43301cc5590faa3a374f",
    "url": "/assets/build/js/main.js"
  },
  {
    "revision": "43301cc5590faa3a374f",
    "url": "/assets/build/css/main.css"
  },

Я попытался поиграть с настройкой globDirectory, но это не сработало.

Вот моя «стандартная» конфигурация Webpack:

const mix = require('laravel-mix');
const WorkboxPlugin = require('workbox-webpack-plugin');
const tailwindcss = require('tailwindcss');
const build = require('./tasks/build.js');


mix.disableSuccessNotifications();
mix.setPublicPath('source/assets/build');
mix.webpackConfig({
    plugins: [
        build.jigsaw,
        build.browserSync(),
        build.watch(['source/**/*.md', 'source/**/*.php', 'source/**/*.scss', '!source/**/_tmp/*']),
        new WorkboxPlugin.GenerateSW({
            // these options encourage the ServiceWorkers to get in there fast
            // and not allow any straggling "old" SWs to hang around
            clientsClaim: true,
            skipWaiting: true,
        }),
    ],
});

mix.js('source/_assets/js/main.js', 'js')
    .sass('source/_assets/sass/main.scss', 'css')
    .options({
        processCssUrls: false,
        postCss: [tailwindcss()],
    })
    .version();

person Philipp Mochine    schedule 21.08.2019    source источник


Ответы (1)


С помощью этого: Файл манифеста предварительного кэша Workbox содержит недопустимые строки URL в настройках Laravel Mix

Я узнал, что могу установить свой путь следующим образом:

mix.webpackConfig({
    plugins: [
        build.jigsaw,
        build.browserSync(),
        build.watch(['source/**/*.md', 'source/**/*.php', 'source/**/*.scss', '!source/**/_tmp/*']),
        new WorkboxPlugin.GenerateSW({
            // these options encourage the ServiceWorkers to get in there fast
            // and not allow any straggling "old" SWs to hang around
            clientsClaim: true,
            skipWaiting: true,
        }),
    ],
    output: {
        publicPath: '/assets/build/', // fixes the output bug
    },
});

Я не уверен, но в другом вопросе они говорят, что это не удастся, когда будет задан определенный путь. До сих пор все выглядит нормально, и мой Service Worker работает нормально :)

person Philipp Mochine    schedule 21.08.2019