Workbox - как сделать так, чтобы рабочий файл сервиса передавался через веб-пакет? - PullRequest
1 голос
/ 01 мая 2020

В настоящее время я генерирую файл рабочего сервиса, используя плагин GenerateSW из workbox-webpack-plugin:

new GenerateSW({
    cacheId: 'foo',
    clientsClaim: true,
    inlineWorkboxRuntime: true,
    runtimeCaching: [
         {
              urlPattern: /^https:\/\/fonts\.googleapis\.com.*/,
              handler: 'StaleWhileRevalidate',
         },
    ],
    skipWaiting: true,
    sourcemap: false,
    swDest: 'sw.js',
}),

Этот результирующий файл sw.js содержит код, созданный вставленным в него плагином GenerateSW. Но этот код не передается, и мне это нужно, потому что решение Google о том, в какую версию ecmascript его написать, не зависит от моего. Я могу перенести файл sw.js с помощью babel после запуска веб-пакета, но мне было интересно, есть ли способ для простой передачи этого файла (предпочтительно с использованием той же env информации, которую использует сам веб-пакет)?

1 Ответ

2 голосов
/ 01 мая 2020

Предполагая, что вы используете workbox-webpack-plugin v5 +, вы можете передать babelPresetEnvTargets, чтобы настроить процесс переноса сгенерированного сервисного работника.

new GenerateSW({
  // Use the Array<string> syntax from
  // https://babeljs.io/docs/en/babel-preset-env#targets
  babelPresetEnvTargets: ['chrome >= 80'],

  // ...other options...
}),
...