сборка рабочего ящика

Модуль workbox-build интегрируется в процесс сборки на основе узлов и может генерировать весь сервис-воркер или просто генерировать список ресурсов для предварительного кэширования, которые можно использовать в существующем сервис-воркере.

Два режима, которые будут использовать большинство разработчиков, — generateSW и injectManifest . Ответы на следующие вопросы помогут вам выбрать правильный режим и конфигурацию.

Какой режим использовать

generateSW

generateSW создает для вас рабочий файл службы, настраиваемый с помощью параметров конфигурации, и записывает его на диск.

Когда generateSW

  • Вы хотите предварительно кэшировать файлы.
  • У вас есть простые потребности в кэшировании во время выполнения.

Когда НЕ использовать generateSW

  • Вы хотите использовать другие функции Service Worker (например, Web Push ).
  • Вы хотите импортировать дополнительные сценарии или добавить дополнительную логику для пользовательских стратегий кэширования.

injectManifest

Режим injectManifest сгенерирует список URL-адресов для предварительного кэширования и добавит этот манифест предварительного кэширования в существующий файл Service Worker. В противном случае файл останется как есть.

Когда использовать injectManifest

  • Вы хотите больше контроля над своим сервисным работником.
  • Вы хотите предварительно кэшировать файлы.
  • Вам необходимо настроить маршрутизацию и стратегии.
  • Вы хотели бы использовать своего сервис-воркера с другими функциями платформы (например, Web Push ).

Когда НЕ использовать injectManifest

  • Вам нужен самый простой способ добавления сервисного работника на ваш сайт.

режим generateSW

Вы можете использовать режим generateSW в сценарии сборки на основе узлов, используя наиболее распространенные параметры конфигурации , например:

// Inside of build.js:
const {generateSW} = require('workbox-build');

// These are some common options, and not all are required.
// Consult the docs for more info.
generateSW({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  navigateFallback: '...',
  runtimeCaching: [{
    // Routing via a matchCallback function:
    urlPattern: ({request, url}) => ...,
    handler: '...',
    options: {
      cacheName: '...',
      expiration: {
        maxEntries: ...,
      },
    },
  }, {
    // Routing via a RegExp:
    urlPattern: new RegExp('...'),
    handler: '...',
    options: {
      cacheName: '...',
      plugins: [..., ...],
    },
  }],
  skipWaiting: ...,
  swDest: '...',
}).then(({count, size, warnings}) => {
  if (warnings.length > 0) {
    console.warn(
      'Warnings encountered while generating a service worker:',
      warnings.join('\n')
    );
  }

  console.log(`Generated a service worker, which will precache ${count} files, totaling ${size} bytes.`);
});

Это создаст сервис-воркер с настройкой предварительного кэширования для всех файлов, выбранных вашей конфигурацией, и предоставленными правилами кэширования во время выполнения.

Полный набор возможностей конфигурации можно найти в справочной документации .

Режим injectManifest

Вы можете использовать режим injectManifest в сценарии сборки на основе узлов, используя наиболее распространенные параметры конфигурации , например:

// Inside of build.js:
const {injectManifest} = require('workbox-build');

// These are some common options, and not all are required.
// Consult the docs for more info.
injectManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  swDest: '...',
  swSrc: '...',
}).then(({count, size, warnings}) => {
  if (warnings.length > 0) {
    console.warn(
      'Warnings encountered while injecting the manifest:',
      warnings.join('\n')
    );
  }

  console.log(`Injected a manifest which will precache ${count} files, totaling ${size} bytes.`);
});

Это создаст манифест предварительного кэширования на основе файлов, выбранных вашей конфигурацией, и внедрит его в существующий рабочий файл службы.

Полный набор возможностей конфигурации можно найти в справочной документации .

Дополнительные режимы

Мы ожидаем, generateSW или injectManifest удовлетворят потребности большинства разработчиков. Однако существует еще один режим, поддерживаемый workbox-build , который может подойти для определенных случаев использования.

Режим getManifest

Это концептуально похоже на режим injectManifest , но вместо добавления манифеста в исходный рабочий файл службы он возвращает массив записей манифеста, а также информацию о количестве записей и общем размере.

Вы можете использовать режим injectManifest в сценарии сборки на основе узлов, используя наиболее распространенные параметры конфигурации , например:

// Inside of build.js:
const {getManifest} = require('workbox-build');

// These are some common options, and not all are required.
// Consult the docs for more info.
getManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
}).then(({manifestEntries, count, size, warnings}) => {
  if (warnings.length > 0) {
    console.warn(
      'Warnings encountered while getting the manifest:',
      warnings.join('\n')
    );
  }

  // Do something with the manifestEntries, and potentially log count and size.
});

Полный набор возможностей конфигурации можно найти в справочной документации .

Типы

BasePartial

Характеристики

  • Дополнительные записи манифеста

    (строка | ManifestEntry )[] необязательно

    Список записей, подлежащих предварительному кэшированию, в дополнение к любым записям, созданным как часть конфигурации сборки.

  • dontCacheBustURLsMatching

    RegExp необязательно

    Предполагается, что ресурсы, соответствующие этому значению, имеют уникальную версию через свой URL-адрес и освобождены от обычной очистки HTTP-кеша, которая выполняется при заполнении предварительного кэша. Хотя это и не обязательно, рекомендуется, чтобы, если ваш существующий процесс сборки уже вставляет значение [hash] в каждое имя файла, вы предоставили RegExp, который обнаружит это, поскольку это уменьшит потребление полосы пропускания при предварительном кэшировании.

  • манифесттрансформс

    ManifestTransform [] необязательно

    Одна или несколько функций, которые будут последовательно применяться к сгенерированному манифесту. Если также указаны modifyURLPrefix или dontCacheBustURLsMatching , соответствующие преобразования будут применены первыми.

  • Максимумфилесизетокачеинбайтес

    номер необязательно

    Значение по умолчанию: 2097152.

    Это значение можно использовать для определения максимального размера файлов, которые будут предварительно кэшироваться. Это предотвращает случайное предварительное кэширование очень больших файлов, которые могли случайно соответствовать одному из ваших шаблонов.

  • изменитьURLPrefix

    объект необязательный

    Строка сопоставления объекта является префиксом для заменяющих строковых значений. Это можно использовать, например, для удаления или добавления префикса пути из записи манифеста, если настройки вашего веб-хостинга не соответствуют настройкам вашей локальной файловой системы. В качестве альтернативы, более гибкой, вы можете использовать параметр manifestTransforms и предоставить функцию, которая изменяет записи в манифесте, используя любую предоставленную вами логику.

    Пример использования:

    // Replace a '/dist/' prefix with '/', and also prepend
    // '/static' to every URL.
    modifyURLPrefix: {
      '/dist/': '/',
      '': '/static',
    }
    

BuildResult

Тип

Опустить < GetManifestResult "manifestEntries"
> & объект

Характеристики

  • пути к файлам

    нить[]

GeneratePartial

Характеристики

  • BabelPresetEnvTargets

    строка[] необязательно

    Значение по умолчанию: ["chrome >= 56"]

    Цели, которые необходимо передать в babel-preset-env при передаче пакета Service Worker.

  • идентификатор кэша

    строка необязательна

    Необязательный идентификатор, добавляемый к имени кэша. Это в первую очередь полезно для локальной разработки, когда несколько сайтов могут обслуживаться из одного http://localhost:port .

  • очисткаУстаревшиеКэши

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Должен ли Workbox пытаться идентифицировать и удалить любые прекеши, созданные более старыми несовместимыми версиями.

  • КлиентыПретензия

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Должен ли сервисный работник начинать контролировать существующих клиентов сразу после его активации.

  • индекс каталога

    строка необязательна

    Если запрос навигации для URL-адреса, заканчивающегося на / не соответствует предварительно кэшированному URL-адресу, это значение будет добавлено к URL-адресу и будет проверено на совпадение с предварительно кэшированным URL. Это должно быть установлено на то, что ваш веб-сервер использует для своего индекса каталога.

  • отключить DevLogs

    логическое значение необязательно

    Значение по умолчанию: ложь.

  • игнорироватьURLParametersMatching

    RegExp[] необязательно

    Любые имена параметров поиска, которые совпадают с одним из регулярных выражений в этом массиве, будут удалены перед поиском соответствия предварительному кэшированию. Это полезно, если ваши пользователи могут запрашивать URL-адреса, содержащие, например, параметры URL-адресов, используемые для отслеживания источника трафика. Если не указано, значение по умолчанию — [/^utm_/, /^fbclid$/] .

  • импортскрипты

    строка[] необязательно

    Список файлов JavaScript, которые следует передать в importScripts() внутри сгенерированного файла сервисного работника. Это полезно, если вы хотите, чтобы Workbox создал рабочий файл службы верхнего уровня, но хотите включить некоторый дополнительный код, например прослушиватель push-событий.

  • inlineWorkboxRuntime

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Должен ли код среды выполнения библиотеки Workbox быть включен в сервис-воркера верхнего уровня или разделен на отдельный файл, который необходимо развернуть вместе с сервис-воркером. Разделение среды выполнения означает, что пользователям не придется повторно загружать код Workbox каждый раз, когда изменяется ваш сервис-воркер верхнего уровня.

  • режим

    строка необязательна

    Значение по умолчанию: «производство».

    Если установлено значение «производство», будет создан оптимизированный пакет сервисного работника, исключающий информацию об отладке. Если здесь не указано явно, будет использоваться process.env.NODE_ENV , а в противном случае оно вернется к 'production' .

  • навигацияРезервный вариант

    строка необязательна

    Значение по умолчанию: ноль.

    Если указано, все запросы навигации для URL-адресов, которые не кэшированы предварительно, будут выполняться с использованием HTML-кода по указанному URL-адресу. Вы должны передать URL-адрес HTML-документа, который указан в вашем манифесте предварительного кэширования. Это предназначено для использования в сценарии одностраничного приложения, в котором вы хотите, чтобы все переходы использовали общий HTML-код оболочки приложения .

  • навигацияFallbackAllowlist

    RegExp[] необязательно

    Необязательный массив регулярных выражений, ограничивающий URL-адреса, к которым применяется настроенное поведение navigateFallback . Это полезно, если только часть URL-адресов вашего сайта следует рассматривать как часть одностраничного приложения . Если настроены оба navigateFallbackDenylist и navigateFallbackAllowlist , список запретов имеет приоритет.

    Примечание . Эти регулярные выражения можно оценивать по каждому целевому URL-адресу во время навигации. Избегайте использования сложных регулярных выражений , иначе ваши пользователи могут столкнуться с задержками при навигации по вашему сайту.

  • навигацияFallbackDenylist

    RegExp[] необязательно

    Необязательный массив регулярных выражений, ограничивающий URL-адреса, к которым применяется настроенное поведение navigateFallback . Это полезно, если только часть URL-адресов вашего сайта следует рассматривать как часть одностраничного приложения . Если настроены оба navigateFallbackDenylist и navigateFallbackAllowlist , список запретов имеет приоритет.

    Примечание . Эти регулярные выражения можно оценивать по каждому целевому URL-адресу во время навигации. Избегайте использования сложных регулярных выражений , иначе ваши пользователи могут столкнуться с задержками при навигации по вашему сайту.

  • навигацияПредварительная загрузка

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Включить или нет предварительную загрузку навигации в сгенерированном сервисном работнике. Если установлено значение true, вы также должны использовать runtimeCaching для настройки соответствующей стратегии ответа, которая будет соответствовать запросам навигации, и использовать предварительно загруженный ответ.

  • оффлайнGoogle Analytics

    логическое | GoogleAnalyticsInitializeOptions необязательно.

    Значение по умолчанию: ложь.

    Определяет, включать ли поддержку автономного Google Analytics . Если true , вызов initialize() workbox-google-analytics будет добавлен к созданному сервисному работнику. Если установлено значение Object , этот объект будет передан в вызов initialize() , что позволит вам настроить поведение.

  • Кэширование во время выполнения

    RuntimeCaching [] необязательно

    При использовании инструментов сборки Workbox для создания сервис-воркера вы можете указать одну или несколько конфигураций кэширования во время выполнения. Затем они преобразуются в вызовы workbox-routing.registerRoute с использованием заданной вами конфигурации соответствия и обработчика.

    Все параметры см. в документации workbox-build.RuntimeCaching . В приведенном ниже примере показана типичная конфигурация с двумя определенными маршрутами времени выполнения:

  • пропуститьОжидание

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Добавлять ли безусловный вызов skipWaiting() к созданному сервисному работнику. Если false , вместо этого будет добавлен прослушиватель message , позволяющий клиентским страницам запускать skipWaiting() путем вызова postMessage({type: 'SKIP_WAITING'}) у ожидающего сервисного работника.

  • исходная карта

    логическое значение необязательно

    Значение по умолчанию: true

    Создавать ли исходную карту для созданных файлов сервис-воркера.

GenerateSWOptions

GetManifestOptions

GetManifestResult

Характеристики

  • считать

    число

  • манифестЗаписи
  • размер

    число

  • предупреждения

    нить[]

GlobPartial

Характеристики

  • globFollow

    логическое значение необязательно

    Значение по умолчанию: true

    Определяет, будут ли использоваться символические ссылки при создании манифеста предварительного кэширования. Для получения дополнительной информации см. определение follow в документации glob .

  • globIgnores

    строка[] необязательно

    Значение по умолчанию: ["**\/node_modules\/**\/*"]

    Набор шаблонов, соответствующих файлам, которые всегда исключаются при создании манифеста предварительного кэширования. Дополнительную информацию см. в определении ignore в документации glob .

  • globPatterns

    строка[] необязательно

    Значение по умолчанию: ["**\/*.{js,wasm,css,html}"]

    Файлы, соответствующие любому из этих шаблонов, будут включены в манифест предварительного кэша. Дополнительную информацию см. в руководстве glob .

  • globStrict

    логическое значение необязательно

    Значение по умолчанию: true

    Если это правда, ошибка чтения каталога при создании манифеста предварительного кэширования приведет к сбою сборки. Если false, проблемный каталог будет пропущен. Для получения дополнительной информации см. определение strict в документации glob .

  • шаблонные URL-адреса

    объект необязательный

    Если URL-адрес отображается на основе какой-либо серверной логики, его содержимое может зависеть от нескольких файлов или другого уникального строкового значения. Ключи в этом объекте представляют собой URL-адреса, отображаемые сервером. Если значения представляют собой массив строк, они будут интерпретироваться как шаблоны glob , а содержимое любых файлов, соответствующих шаблонам, будет использоваться для уникальной версии URL-адреса. Если используется с одной строкой, она будет интерпретироваться как уникальная информация о версии, созданная вами для данного URL-адреса.

InjectManifestOptions

InjectPartial

Характеристики

  • точка инъекции

    строка необязательна

    Значение по умолчанию: «self.__WB_MANIFEST».

    Строка, которую нужно найти внутри файла swSrc . После обнаружения он будет заменен сгенерированным манифестом прекэша.

  • swSrc

    нить

    Путь и имя файла сервисного рабочего, который будет считываться во время процесса сборки, относительно текущего рабочего каталога.

ManifestEntry

Характеристики

  • честность

    строка необязательна

  • пересмотр

    нить

  • URL

    нить

ManifestTransform()

workbox-build.ManifestTransform(
  manifestEntries: (ManifestEntry & object)[],
  compilation?: unknown,
)

Тип

функция

Параметры

  • манифестЗаписи

    ( ManifestEntry и объект)[]

    • размер

      число

  • компиляция

    неизвестно, необязательно

ManifestTransformResult

Характеристики

  • манифестировать

    ( ManifestEntry и объект)[]

    • размер

      число

  • предупреждения

    строка[] необязательно

OptionalGlobDirectoryPartial

Характеристики

  • globDirectory

    строка необязательна

    Локальный каталог, с которым вы хотите сопоставить globPatterns . Путь указывается относительно текущего каталога.

RequiredGlobDirectoryPartial

Характеристики

  • globDirectory

    нить

    Локальный каталог, с которым вы хотите сопоставить globPatterns . Путь указывается относительно текущего каталога.

RequiredSWDestPartial

Характеристики

  • swDest

    нить

    Путь и имя файла сервисного рабочего, который будет создан в процессе сборки, относительно текущего рабочего каталога. Он должен заканчиваться на «.js».

RuntimeCaching

Характеристики

  • Это определяет, как маршрут времени выполнения будет генерировать ответ. Чтобы использовать одну из встроенных workbox-strategies , укажите ее имя, например 'NetworkFirst' . Альтернативно это может быть функция обратного вызова workbox-core.RouteHandler с настраиваемой логикой ответа.

  • метод

    HTTPMethod необязательно

    Значение по умолчанию: «GET».

    HTTP-метод для сопоставления. Значения по умолчанию 'GET' обычно достаточно, если только вам явно не нужно сопоставить 'POST' , 'PUT' или другой тип запроса.

  • параметры

    объект необязательный

    • фоновая синхронизация

      объект необязательный

      При этой настройке экземпляр workbox-background-sync.BackgroundSyncPlugin будет добавлен в workbox-strategies , настроенные в handler .

      • имя

        нить

      • параметры

        QueueOptions необязательно

    • трансляцияОбновить

      объект необязательный

      При этой настройке экземпляр workbox-broadcast-update.BroadcastUpdatePlugin будет добавлен к workbox-strategies настроенным в handler .

    • имя кэша

      строка необязательна

      Если это предусмотрено, будет установлено свойство cacheName workbox-strategies настроенных в handler .

    • кэшируемыйОтвет

      CacheableResponseOptions необязательно

      При этой настройке экземпляр workbox-cacheable-response.CacheableResponsePlugin будет добавлен к workbox-strategies настроенным в handler .

    • истечение срока действия

      Параметры ExpirationPluginOptions необязательны.

      При этой настройке экземпляр workbox-expiration.ExpirationPlugin будет добавлен к workbox-strategies настроенным в handler .

    • параметры выборки

      RequestInit необязательно

      При этой настройке значение fetchOptions будет передано workbox-strategies настроенным в handler .

    • параметры совпадения

      CacheQueryOptions необязательно

      При этой настройке значение matchOptions будет передано workbox-strategies настроенным в handler .

    • сетьTimeoutSeconds

      номер необязательно

      Если это предусмотрено, будет установлено свойство networkTimeoutSeconds workbox-strategies настроенных в handler . Обратите внимание, что только 'NetworkFirst' поддерживаются networkTimeoutSeconds 'NetworkOnly'

    • плагины

      WorkboxPlugin [] необязательно

      Эта настройка позволяет использовать один или несколько плагинов Workbox, у которых нет опций «ярлыка» (например, expiration для workbox-expiration.ExpirationPlugin ). Предоставленные здесь плагины будут добавлены к workbox-strategies , настроенным в handler .

    • PrecacheFallback

      объект необязательный

      При этой настройке экземпляр workbox-precaching.PrecacheFallbackPlugin будет добавлен к workbox-strategies настроенным в handler .

      • резервныйURL

        нить

    • диапазонЗапросы

      логическое значение необязательно

      Включение этого параметра добавит экземпляр workbox-range-requests.RangeRequestsPlugin к workbox-strategies настроенным в handler .

  • urlPattern

    строка | регэксп | МаршрутMatchОбратный вызов

    Этот критерий соответствия определяет, будет ли настроенный обработчик генерировать ответ на любые запросы, которые не соответствуют одному из предварительно кэшированных URL-адресов. Если определено несколько маршрутов RuntimeCaching , то первым будет отвечать тот, чей urlPattern соответствует.

    Это значение напрямую соответствует первому параметру, переданному в workbox-routing.registerRoute . Для большей гибкости рекомендуется использовать функцию workbox-core.RouteMatchCallback .

StrategyName

Перечисление

«КэшФерст»

«Только кэш»

«СетьФерст»

«Только сеть»

"StaleWhileRevalidate"

WebpackGenerateSWOptions

WebpackGenerateSWPartial

Характеристики

  • импортскриптсвиачанкс

    строка[] необязательно

    Одно или несколько имен фрагментов веб-пакета. Содержимое этих фрагментов будет включено в сгенерированный сервис-воркер посредством вызова importScripts() .

  • swDest

    строка необязательна

    Значение по умолчанию: «service-worker.js».

    Имя ресурса файла сервисного работника, созданного этим плагином.

WebpackInjectManifestOptions

WebpackInjectManifestPartial

Характеристики

  • компилироватьSrc

    логическое значение необязательно

    Значение по умолчанию: true

    Если установлено true (по умолчанию), файл swSrc будет скомпилирован веб-пакетом. Если установлено false , компиляция не произойдет (и использовать webpackCompilationPlugins невозможно). Установите значение false , если вы хотите внедрить манифест, например, в файл JSON.

  • swDest

    строка необязательна

    Имя ресурса рабочего файла службы, который будет создан этим плагином. Если этот параметр опущен, имя будет основано на имени swSrc .

  • webpackКомпиляцияПлагины

    любой[] необязательно

    Дополнительные плагины webpack , которые будут использоваться при компиляции входного файла swSrc . Действует только в том случае, если compileSrc имеет true .

WebpackPartial

Характеристики

  • куски

    строка[] необязательно

    Одно или несколько имен фрагментов, соответствующие выходные файлы которых должны быть включены в манифест предварительного кэширования.

  • исключать

    (строка | RegExp | функция)[] необязательно

    Один или несколько спецификаторов, используемых для исключения ресурсов из манифеста предварительного кэширования. Это интерпретируется по тем же правилам , что и стандартная опция exclude webpack . Если не указано, значение по умолчанию — [/\.map$/, /^manifest.*\.js$] .

  • исключить куски

    строка[] необязательно

    Одно или несколько имен фрагментов, соответствующие выходные файлы которых следует исключить из манифеста предварительного кэширования.

  • включать

    (строка | RegExp | функция)[] необязательно

    Один или несколько спецификаторов, используемых для включения ресурсов в манифест предварительного кэширования. Это интерпретируется по тем же правилам , что и стандартная опция include webpack .

  • режим

    строка необязательна

    Если установлено значение «производство», будет создан оптимизированный пакет сервисного работника, исключающий информацию об отладке. Если здесь не указано явно, будет использоваться значение mode , настроенное в текущей компиляции webpack .

Методы

copyWorkboxLibraries()

workbox-build.copyWorkboxLibraries(
  destDirectory: string,
)

При этом набор библиотек времени выполнения, используемых Workbox, копируется в локальный каталог, который следует развернуть вместе с вашим рабочим файлом службы.

В качестве альтернативы развертыванию этих локальных копий вы можете использовать Workbox с официального URL-адреса CDN.

Этот метод предоставляется для разработчиков, использующих workbox-build.injectManifest , которые предпочитают не использовать копии Workbox из CDN. Разработчикам, использующим workbox-build.generateSW не нужно явно вызывать этот метод.

Параметры

  • destDirectory

    нить

    Путь к родительскому каталогу, в котором будет создан новый каталог библиотек.

Возврат

  • Обещание<строка>

    Имя вновь созданного каталога.

generateSW()

workbox-build.generateSW(
  config: GenerateSWOptions,
)

Этот метод создает список URL-адресов для предварительного кэширования, называемый «манифестом предварительного кэширования», на основе предоставленных вами параметров.

Он также принимает дополнительные параметры, которые настраивают поведение сервисного работника, как и любые правила runtimeCaching , которые он должен использовать.

На основе манифеста предварительного кэширования и дополнительной конфигурации он записывает готовый к использованию рабочий файл службы на диск по адресу swDest .

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
const {count, size, warnings} = await generateSW({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  navigateFallback: '...',
  runtimeCaching: [{
    // Routing via a matchCallback function:
    urlPattern: ({request, url}) => ...,
    handler: '...',
    options: {
      cacheName: '...',
      expiration: {
        maxEntries: ...,
      },
    },
  }, {
    // Routing via a RegExp:
    urlPattern: new RegExp('...'),
    handler: '...',
    options: {
      cacheName: '...',
      plugins: [..., ...],
    },
  }],
  skipWaiting: ...,
  swDest: '...',
});

Параметры

Возврат

getManifest()

workbox-build.getManifest(
  config: GetManifestOptions,
)

Этот метод возвращает список URL-адресов для предварительного кэширования, называемый «манифестом предварительного кэширования», а также сведения о количестве записей и их размере в зависимости от предоставленных вами параметров.

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
const {count, manifestEntries, size, warnings} = await getManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
});

Параметры

Возврат

getModuleURL()

workbox-build.getModuleURL(
  moduleName: string,
  buildType: BuildType,
)

Параметры

  • имя модуля

    нить

  • тип сборки

    тип сборки

Возврат

  • нить

injectManifest()

workbox-build.injectManifest(
  config: InjectManifestOptions,
)

Этот метод создает список URL-адресов для предварительного кэширования, называемый «манифестом предварительного кэширования», на основе предоставленных вами параметров.

Манифест вводится в файл swSrc , а строка-заполнитель injectionPoint определяет, в каком месте файла должен находиться манифест.

Окончательный файл сервисного работника с внедренным манифестом записывается на диск по адресу swDest .

Этот метод не будет компилировать или связывать ваш файл swSrc ; он просто обрабатывает внедрение манифеста.

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
const {count, size, warnings} = await injectManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  swDest: '...',
  swSrc: '...',
});

Параметры

Возврат

,

Модуль workbox-build интегрируется в процесс сборки на основе узлов и может генерировать весь сервис-воркер или просто генерировать список ресурсов для предварительного кэширования, которые можно использовать в существующем сервис-воркере.

Два режима, которые будут использовать большинство разработчиков, — generateSW и injectManifest . Ответы на следующие вопросы помогут вам выбрать правильный режим и конфигурацию.

Какой режим использовать

generateSW

generateSW создает для вас рабочий файл службы, настраиваемый с помощью параметров конфигурации, и записывает его на диск.

Когда generateSW

  • Вы хотите предварительно кэшировать файлы.
  • У вас есть простые потребности в кэшировании во время выполнения.

Когда НЕ использовать generateSW

  • Вы хотите использовать другие функции Service Worker (например, Web Push ).
  • Вы хотите импортировать дополнительные сценарии или добавить дополнительную логику для пользовательских стратегий кэширования.

injectManifest

Режим injectManifest сгенерирует список URL-адресов для предварительного кэширования и добавит этот манифест предварительного кэширования в существующий файл Service Worker. В противном случае файл останется как есть.

Когда использовать injectManifest

  • Вы хотите больше контроля над своим сервисным работником.
  • Вы хотите предварительно кэшировать файлы.
  • Вам необходимо настроить маршрутизацию и стратегии.
  • Вы хотели бы использовать своего сервис-воркера с другими функциями платформы (например, Web Push ).

Когда НЕ использовать injectManifest

  • Вам нужен самый простой способ добавления сервисного работника на ваш сайт.

режим generateSW

Вы можете использовать режим generateSW в сценарии сборки на основе узлов, используя наиболее распространенные параметры конфигурации , например:

// Inside of build.js:
const {generateSW} = require('workbox-build');

// These are some common options, and not all are required.
// Consult the docs for more info.
generateSW({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  navigateFallback: '...',
  runtimeCaching: [{
    // Routing via a matchCallback function:
    urlPattern: ({request, url}) => ...,
    handler: '...',
    options: {
      cacheName: '...',
      expiration: {
        maxEntries: ...,
      },
    },
  }, {
    // Routing via a RegExp:
    urlPattern: new RegExp('...'),
    handler: '...',
    options: {
      cacheName: '...',
      plugins: [..., ...],
    },
  }],
  skipWaiting: ...,
  swDest: '...',
}).then(({count, size, warnings}) => {
  if (warnings.length > 0) {
    console.warn(
      'Warnings encountered while generating a service worker:',
      warnings.join('\n')
    );
  }

  console.log(`Generated a service worker, which will precache ${count} files, totaling ${size} bytes.`);
});

Это создаст сервис-воркер с настройкой предварительного кэширования для всех файлов, выбранных вашей конфигурацией, и предоставленными правилами кэширования во время выполнения.

Полный набор возможностей конфигурации можно найти в справочной документации .

Режим injectManifest

Вы можете использовать режим injectManifest в сценарии сборки на основе узлов, используя наиболее распространенные параметры конфигурации , например:

// Inside of build.js:
const {injectManifest} = require('workbox-build');

// These are some common options, and not all are required.
// Consult the docs for more info.
injectManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  swDest: '...',
  swSrc: '...',
}).then(({count, size, warnings}) => {
  if (warnings.length > 0) {
    console.warn(
      'Warnings encountered while injecting the manifest:',
      warnings.join('\n')
    );
  }

  console.log(`Injected a manifest which will precache ${count} files, totaling ${size} bytes.`);
});

Это создаст манифест предварительного кэширования на основе файлов, выбранных вашей конфигурацией, и внедрит его в существующий рабочий файл службы.

Полный набор возможностей конфигурации можно найти в справочной документации .

Дополнительные режимы

Мы ожидаем, generateSW или injectManifest удовлетворят потребности большинства разработчиков. Однако существует еще один режим, поддерживаемый workbox-build , который может подойти для определенных случаев использования.

Режим getManifest

Это концептуально похоже на режим injectManifest , но вместо добавления манифеста в исходный рабочий файл службы он возвращает массив записей манифеста, а также информацию о количестве записей и общем размере.

Вы можете использовать режим injectManifest в сценарии сборки на основе узлов, используя наиболее распространенные параметры конфигурации , например:

// Inside of build.js:
const {getManifest} = require('workbox-build');

// These are some common options, and not all are required.
// Consult the docs for more info.
getManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
}).then(({manifestEntries, count, size, warnings}) => {
  if (warnings.length > 0) {
    console.warn(
      'Warnings encountered while getting the manifest:',
      warnings.join('\n')
    );
  }

  // Do something with the manifestEntries, and potentially log count and size.
});

Полный набор возможностей конфигурации можно найти в справочной документации .

Типы

BasePartial

Характеристики

  • Дополнительные записи манифеста

    (строка | ManifestEntry )[] необязательно

    Список записей, подлежащих предварительному кэшированию, в дополнение к любым записям, созданным как часть конфигурации сборки.

  • dontCacheBustURLsMatching

    RegExp необязательно

    Предполагается, что ресурсы, соответствующие этому значению, имеют уникальную версию через свой URL-адрес и освобождены от обычной очистки HTTP-кеша, которая выполняется при заполнении предварительного кэша. Хотя это и не обязательно, рекомендуется, чтобы, если ваш существующий процесс сборки уже вставляет значение [hash] в каждое имя файла, вы предоставили RegExp, который обнаружит это, поскольку это уменьшит потребление полосы пропускания при предварительном кэшировании.

  • манифесттрансформс

    ManifestTransform [] необязательно

    Одна или несколько функций, которые будут последовательно применяться к сгенерированному манифесту. Если также указаны modifyURLPrefix или dontCacheBustURLsMatching , соответствующие преобразования будут применены первыми.

  • Максимумфилесизетокачеинбайтес

    номер необязательно

    Значение по умолчанию: 2097152.

    Это значение можно использовать для определения максимального размера файлов, которые будут предварительно кэшироваться. Это предотвращает случайное предварительное кэширование очень больших файлов, которые могли случайно соответствовать одному из ваших шаблонов.

  • изменитьURLPrefix

    объект необязательный

    Строка сопоставления объекта является префиксом для заменяющих строковых значений. Это можно использовать, например, для удаления или добавления префикса пути из записи манифеста, если настройки вашего веб-хостинга не соответствуют настройкам вашей локальной файловой системы. В качестве альтернативы, более гибкой, вы можете использовать параметр manifestTransforms и предоставить функцию, которая изменяет записи в манифесте, используя любую предоставленную вами логику.

    Пример использования:

    // Replace a '/dist/' prefix with '/', and also prepend
    // '/static' to every URL.
    modifyURLPrefix: {
      '/dist/': '/',
      '': '/static',
    }
    

BuildResult

Тип

Опустить < GetManifestResult "manifestEntries"
> & объект

Характеристики

  • пути к файлам

    нить[]

GeneratePartial

Характеристики

  • BabelPresetEnvTargets

    строка[] необязательно

    Значение по умолчанию: ["chrome >= 56"]

    Цели, которые необходимо передать в babel-preset-env при передаче пакета Service Worker.

  • идентификатор кэша

    строка необязательна

    Необязательный идентификатор, добавляемый к имени кэша. Это в первую очередь полезно для локальной разработки, когда несколько сайтов могут обслуживаться из одного http://localhost:port .

  • очисткаУстаревшиеКэши

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Должен ли Workbox пытаться идентифицировать и удалить любые прекеши, созданные более старыми несовместимыми версиями.

  • КлиентыПретензия

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Должен ли сервисный работник начинать контролировать существующих клиентов сразу после его активации.

  • индекс каталога

    строка необязательна

    Если запрос навигации для URL-адреса, заканчивающегося на / не соответствует предварительно кэшированному URL-адресу, это значение будет добавлено к URL-адресу и будет проверено на совпадение с предварительно кэшированным URL. Это должно быть установлено на то, что ваш веб-сервер использует для своего индекса каталога.

  • отключить DevLogs

    логическое значение необязательно

    Значение по умолчанию: ложь.

  • игнорироватьURLParametersMatching

    RegExp[] необязательно

    Любые имена параметров поиска, которые совпадают с одним из регулярных выражений в этом массиве, будут удалены перед поиском соответствия предварительному кэшированию. Это полезно, если ваши пользователи могут запрашивать URL-адреса, содержащие, например, параметры URL-адресов, используемые для отслеживания источника трафика. Если не указано, значение по умолчанию — [/^utm_/, /^fbclid$/] .

  • импортскрипты

    строка[] необязательно

    Список файлов JavaScript, которые следует передать в importScripts() внутри сгенерированного файла сервисного работника. Это полезно, если вы хотите, чтобы Workbox создал рабочий файл службы верхнего уровня, но хотите включить некоторый дополнительный код, например прослушиватель push-событий.

  • inlineWorkboxRuntime

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Должен ли код среды выполнения библиотеки Workbox быть включен в сервис-воркера верхнего уровня или разделен на отдельный файл, который необходимо развернуть вместе с сервис-воркером. Разделение среды выполнения означает, что пользователям не придется повторно загружать код Workbox каждый раз, когда изменяется ваш сервис-воркер верхнего уровня.

  • режим

    строка необязательна

    Значение по умолчанию: «производство».

    Если установлено значение «производство», будет создан оптимизированный пакет сервисного работника, исключающий информацию об отладке. Если здесь не указано явно, будет использоваться process.env.NODE_ENV , а в противном случае оно вернется к 'production' .

  • навигацияРезервный вариант

    строка необязательна

    Значение по умолчанию: ноль.

    Если указано, все запросы навигации для URL-адресов, которые не кэшированы предварительно, будут выполняться с использованием HTML-кода по указанному URL-адресу. Вы должны передать URL-адрес HTML-документа, который указан в вашем манифесте предварительного кэширования. Это предназначено для использования в сценарии одностраничного приложения, в котором вы хотите, чтобы все переходы использовали общий HTML-код оболочки приложения .

  • навигацияFallbackAllowlist

    RegExp[] необязательно

    Необязательный массив регулярных выражений, ограничивающий URL-адреса, к которым применяется настроенное поведение navigateFallback . Это полезно, если только часть URL-адресов вашего сайта следует рассматривать как часть одностраничного приложения . Если настроены оба navigateFallbackDenylist и navigateFallbackAllowlist , список запретов имеет приоритет.

    Примечание . Эти регулярные выражения можно оценивать по каждому целевому URL-адресу во время навигации. Избегайте использования сложных регулярных выражений , иначе ваши пользователи могут столкнуться с задержками при навигации по вашему сайту.

  • навигацияFallbackDenylist

    RegExp[] необязательно

    Необязательный массив регулярных выражений, ограничивающий URL-адреса, к которым применяется настроенное поведение navigateFallback . Это полезно, если только часть URL-адресов вашего сайта следует рассматривать как часть одностраничного приложения . Если настроены оба navigateFallbackDenylist и navigateFallbackAllowlist , список запретов имеет приоритет.

    Примечание . Эти регулярные выражения можно оценивать по каждому целевому URL-адресу во время навигации. Избегайте использования сложных регулярных выражений , иначе ваши пользователи могут столкнуться с задержками при навигации по вашему сайту.

  • навигацияПредварительная загрузка

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Включить или нет предварительную загрузку навигации в сгенерированном сервисном работнике. Если установлено значение true, вы также должны использовать runtimeCaching для настройки соответствующей стратегии ответа, которая будет соответствовать запросам навигации, и использовать предварительно загруженный ответ.

  • оффлайнGoogle Analytics

    логическое | GoogleAnalyticsInitializeOptions необязательно.

    Значение по умолчанию: ложь.

    Определяет, включать ли поддержку автономного Google Analytics . Если true , вызов initialize() workbox-google-analytics будет добавлен к созданному сервисному работнику. Если установлено значение Object , этот объект будет передан в вызов initialize() , что позволит вам настроить поведение.

  • Кэширование во время выполнения

    RuntimeCaching [] необязательно

    При использовании инструментов сборки Workbox для создания сервис-воркера вы можете указать одну или несколько конфигураций кэширования во время выполнения. Затем они преобразуются в вызовы workbox-routing.registerRoute с использованием заданной вами конфигурации соответствия и обработчика.

    Все параметры см. в документации workbox-build.RuntimeCaching . В приведенном ниже примере показана типичная конфигурация с двумя определенными маршрутами времени выполнения:

  • пропуститьОжидание

    логическое значение необязательно

    Значение по умолчанию: ложь.

    Добавлять ли безусловный вызов skipWaiting() к созданному сервисному работнику. Если false , вместо этого будет добавлен прослушиватель message , позволяющий клиентским страницам запускать skipWaiting() путем вызова postMessage({type: 'SKIP_WAITING'}) у ожидающего сервисного работника.

  • исходная карта

    логическое значение необязательно

    Значение по умолчанию: true

    Создавать ли исходную карту для созданных файлов сервис-воркера.

GenerateSWOptions

GetManifestOptions

GetManifestResult

Характеристики

  • считать

    число

  • манифестЗаписи
  • размер

    число

  • предупреждения

    нить[]

GlobPartial

Характеристики

  • globFollow

    логическое значение необязательно

    Значение по умолчанию: true

    Определяет, будут ли использоваться символические ссылки при создании манифеста предварительного кэширования. Для получения дополнительной информации см. определение follow в документации glob .

  • globIgnores

    строка[] необязательно

    Значение по умолчанию: ["**\/node_modules\/**\/*"]

    Набор шаблонов, соответствующих файлам, которые всегда исключаются при создании манифеста предварительного кэширования. Дополнительную информацию см. в определении ignore в документации glob .

  • globPatterns

    строка[] необязательно

    Значение по умолчанию: ["**\/*.{js,wasm,css,html}"]

    Файлы, соответствующие любому из этих шаблонов, будут включены в манифест предварительного кэша. Дополнительную информацию см. в руководстве glob .

  • globStrict

    логическое значение необязательно

    Значение по умолчанию: true

    Если это правда, ошибка чтения каталога при создании манифеста предварительного кэширования приведет к сбою сборки. Если false, проблемный каталог будет пропущен. Для получения дополнительной информации см. определение strict в документации glob .

  • шаблонные URL-адреса

    объект необязательный

    Если URL-адрес отображается на основе какой-либо серверной логики, его содержимое может зависеть от нескольких файлов или другого уникального строкового значения. Ключи в этом объекте представляют собой URL-адреса, отображаемые сервером. Если значения представляют собой массив строк, они будут интерпретироваться как шаблоны glob , а содержимое любых файлов, соответствующих шаблонам, будет использоваться для уникальной версии URL-адреса. Если используется с одной строкой, она будет интерпретироваться как уникальная информация о версии, созданная вами для данного URL-адреса.

InjectManifestOptions

InjectPartial

Характеристики

  • точка инъекции

    строка необязательна

    Значение по умолчанию: «self.__WB_MANIFEST».

    Строка, которую нужно найти внутри файла swSrc . После обнаружения он будет заменен сгенерированным манифестом прекэша.

  • swSrc

    нить

    Путь и имя файла сервисного рабочего, который будет считываться во время процесса сборки, относительно текущего рабочего каталога.

ManifestEntry

Характеристики

  • честность

    строка необязательна

  • пересмотр

    нить

  • URL

    нить

ManifestTransform()

workbox-build.ManifestTransform(
  manifestEntries: (ManifestEntry & object)[],
  compilation?: unknown,
)

Тип

функция

Параметры

  • манифестЗаписи

    ( ManifestEntry и объект)[]

    • размер

      число

  • компиляция

    неизвестно, необязательно

ManifestTransformResult

Характеристики

  • манифестировать

    ( ManifestEntry и объект)[]

    • размер

      число

  • предупреждения

    строка[] необязательно

OptionalGlobDirectoryPartial

Характеристики

  • globDirectory

    строка необязательна

    Локальный каталог, с которым вы хотите сопоставить globPatterns . Путь указывается относительно текущего каталога.

RequiredGlobDirectoryPartial

Характеристики

  • globDirectory

    нить

    Локальный каталог, с которым вы хотите сопоставить globPatterns . Путь указывается относительно текущего каталога.

RequiredSWDestPartial

Характеристики

  • swDest

    нить

    Путь и имя файла сервисного рабочего, который будет создан в процессе сборки, относительно текущего рабочего каталога. Он должен заканчиваться на «.js».

RuntimeCaching

Характеристики

  • Это определяет, как маршрут времени выполнения будет генерировать ответ. Чтобы использовать одну из встроенных workbox-strategies , укажите ее имя, например 'NetworkFirst' . Альтернативно это может быть функция обратного вызова workbox-core.RouteHandler с настраиваемой логикой ответа.

  • метод

    HTTPMethod необязательно

    Значение по умолчанию: «GET».

    HTTP-метод для сопоставления. Значения по умолчанию 'GET' обычно достаточно, если только вам явно не нужно сопоставить 'POST' , 'PUT' или другой тип запроса.

  • параметры

    объект необязательный

    • фоновая синхронизация

      объект необязательный

      При этой настройке экземпляр workbox-background-sync.BackgroundSyncPlugin будет добавлен в workbox-strategies , настроенные в handler .

      • имя

        нить

      • параметры

        QueueOptions необязательно

    • трансляцияОбновить

      объект необязательный

      При этой настройке экземпляр workbox-broadcast-update.BroadcastUpdatePlugin будет добавлен к workbox-strategies настроенным в handler .

    • имя кэша

      строка необязательна

      Если это предусмотрено, будет установлено свойство cacheName workbox-strategies настроенных в handler .

    • кэшируемыйОтвет

      CacheableResponseOptions необязательно

      При этой настройке экземпляр workbox-cacheable-response.CacheableResponsePlugin будет добавлен к workbox-strategies настроенным в handler .

    • истечение срока действия

      Параметры ExpirationPluginOptions необязательны.

      При этой настройке экземпляр workbox-expiration.ExpirationPlugin будет добавлен к workbox-strategies настроенным в handler .

    • параметры выборки

      RequestInit необязательно

      При этой настройке значение fetchOptions будет передано workbox-strategies настроенным в handler .

    • параметры совпадения

      CacheQueryOptions необязательно

      При этой настройке значение matchOptions будет передано workbox-strategies настроенным в handler .

    • сетьTimeoutSeconds

      номер необязательно

      Если это предусмотрено, будет установлено свойство networkTimeoutSeconds workbox-strategies настроенных в handler . Обратите внимание, что только 'NetworkFirst' поддерживаются networkTimeoutSeconds 'NetworkOnly'

    • плагины

      WorkboxPlugin [] необязательно

      Эта настройка позволяет использовать один или несколько плагинов Workbox, у которых нет опций «ярлыка» (например, expiration для workbox-expiration.ExpirationPlugin ). Предоставленные здесь плагины будут добавлены к workbox-strategies , настроенным в handler .

    • PrecacheFallback

      объект необязательный

      При этой настройке экземпляр workbox-precaching.PrecacheFallbackPlugin будет добавлен к workbox-strategies настроенным в handler .

      • резервныйURL

        нить

    • диапазонЗапросы

      логическое значение необязательно

      Включение этого параметра добавит экземпляр workbox-range-requests.RangeRequestsPlugin к workbox-strategies настроенным в handler .

  • urlPattern

    строка | регэксп | МаршрутMatchОбратный вызов

    Этот критерий соответствия определяет, будет ли настроенный обработчик генерировать ответ на любые запросы, которые не соответствуют одному из предварительно кэшированных URL-адресов. Если определено несколько маршрутов RuntimeCaching , то первым будет отвечать тот, чей urlPattern соответствует.

    Это значение напрямую соответствует первому параметру, переданному в workbox-routing.registerRoute . Для большей гибкости рекомендуется использовать функцию workbox-core.RouteMatchCallback .

StrategyName

Перечисление

«КэшФерст»

«Только кэш»

«СетьФерст»

«Только сеть»

"StaleWhileRevalidate"

WebpackGenerateSWOptions

WebpackGenerateSWPartial

Характеристики

  • импортскриптсвиачанкс

    строка[] необязательно

    Одно или несколько имен фрагментов веб-пакета. Содержимое этих фрагментов будет включено в сгенерированный сервис-воркер посредством вызова importScripts() .

  • swDest

    строка необязательна

    Значение по умолчанию: «service-worker.js».

    Имя ресурса файла сервисного работника, созданного этим плагином.

WebpackInjectManifestOptions

WebpackInjectManifestPartial

Характеристики

  • компилироватьSrc

    логическое значение необязательно

    Значение по умолчанию: true

    Если установлено true (по умолчанию), файл swSrc будет скомпилирован веб-пакетом. Если установлено false , компиляция не произойдет (и использовать webpackCompilationPlugins невозможно). Установите значение false , если вы хотите внедрить манифест, например, в файл JSON.

  • swDest

    строка необязательна

    Имя ресурса рабочего файла службы, который будет создан этим плагином. Если этот параметр опущен, имя будет основано на имени swSrc .

  • webpackКомпиляцияПлагины

    любой[] необязательно

    Дополнительные плагины webpack , которые будут использоваться при компиляции входного файла swSrc . Действует только в том случае, если compileSrc имеет true .

WebpackPartial

Характеристики

  • куски

    строка[] необязательно

    Одно или несколько имен фрагментов, соответствующие выходные файлы которых должны быть включены в манифест предварительного кэширования.

  • исключать

    (строка | RegExp | функция)[] необязательно

    Один или несколько спецификаторов, используемых для исключения ресурсов из манифеста предварительного кэширования. Это интерпретируется по тем же правилам , что и стандартная опция exclude webpack . Если не указано, значение по умолчанию — [/\.map$/, /^manifest.*\.js$] .

  • исключить куски

    строка[] необязательно

    Одно или несколько имен фрагментов, соответствующие выходные файлы которых следует исключить из манифеста предварительного кэширования.

  • включать

    (строка | RegExp | функция)[] необязательно

    Один или несколько спецификаторов, используемых для включения ресурсов в манифест предварительного кэширования. Это интерпретируется по тем же правилам , что и стандартная опция include webpack .

  • режим

    строка необязательна

    Если установлено значение «производство», будет создан оптимизированный пакет сервисного работника, исключающий информацию об отладке. Если здесь не указано явно, будет использоваться значение mode , настроенное в текущей компиляции webpack .

Методы

copyWorkboxLibraries()

workbox-build.copyWorkboxLibraries(
  destDirectory: string,
)

При этом набор библиотек времени выполнения, используемых Workbox, копируется в локальный каталог, который следует развернуть вместе с вашим рабочим файлом службы.

В качестве альтернативы развертыванию этих локальных копий вы можете использовать Workbox с официального URL-адреса CDN.

Этот метод предоставляется для разработчиков, использующих workbox-build.injectManifest , которые предпочитают не использовать копии Workbox из CDN. Разработчикам, использующим workbox-build.generateSW не нужно явно вызывать этот метод.

Параметры

  • destDirectory

    нить

    Путь к родительскому каталогу, в котором будет создан новый каталог библиотек.

Возврат

  • Обещание<строка>

    Имя вновь созданного каталога.

generateSW()

workbox-build.generateSW(
  config: GenerateSWOptions,
)

Этот метод создает список URL-адресов для предварительного кэширования, называемый «манифестом предварительного кэширования», на основе предоставленных вами параметров.

Он также принимает дополнительные параметры, которые настраивают поведение сервисного работника, как и любые правила runtimeCaching , которые он должен использовать.

На основе манифеста предварительного кэширования и дополнительной конфигурации он записывает готовый к использованию рабочий файл службы на диск по адресу swDest .

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
const {count, size, warnings} = await generateSW({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  navigateFallback: '...',
  runtimeCaching: [{
    // Routing via a matchCallback function:
    urlPattern: ({request, url}) => ...,
    handler: '...',
    options: {
      cacheName: '...',
      expiration: {
        maxEntries: ...,
      },
    },
  }, {
    // Routing via a RegExp:
    urlPattern: new RegExp('...'),
    handler: '...',
    options: {
      cacheName: '...',
      plugins: [..., ...],
    },
  }],
  skipWaiting: ...,
  swDest: '...',
});

Параметры

Возврат

getManifest()

workbox-build.getManifest(
  config: GetManifestOptions,
)

Этот метод возвращает список URL-адресов для предварительного кэширования, называемый «манифестом предварительного кэширования», а также сведения о количестве записей и их размере в зависимости от предоставленных вами параметров.

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
const {count, manifestEntries, size, warnings} = await getManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
});

Параметры

Возврат

getModuleURL()

workbox-build.getModuleURL(
  moduleName: string,
  buildType: BuildType,
)

Параметры

  • имя модуля

    нить

  • тип сборки

    тип сборки

Возврат

  • нить

injectManifest()

workbox-build.injectManifest(
  config: InjectManifestOptions,
)

Этот метод создает список URL-адресов для предварительного кэширования, называемый «манифестом предварительного кэширования», на основе предоставленных вами параметров.

Манифест вводится в файл swSrc , а строка-заполнитель injectionPoint определяет, в каком месте файла должен находиться манифест.

Окончательный файл сервисного работника с внедренным манифестом записывается на диск по адресу swDest .

Этот метод не будет компилировать или связывать ваш файл swSrc ; он просто обрабатывает внедрение манифеста.

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
const {count, size, warnings} = await injectManifest({
  dontCacheBustURLsMatching: [new RegExp('...')],
  globDirectory: '...',
  globPatterns: ['...', '...'],
  maximumFileSizeToCacheInBytes: ...,
  swDest: '...',
  swSrc: '...',
});

Параметры

Возврат