Модуль 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-код оболочки приложения .
RegExp[] необязательно
Необязательный массив регулярных выражений, ограничивающий URL-адреса, к которым применяется настроенное поведение
navigateFallback
. Это полезно, если только часть URL-адресов вашего сайта следует рассматривать как часть одностраничного приложения . Если настроены обаnavigateFallbackDenylist
иnavigateFallbackAllowlist
, список запретов имеет приоритет.Примечание . Эти регулярные выражения можно оценивать по каждому целевому URL-адресу во время навигации. Избегайте использования сложных регулярных выражений , иначе ваши пользователи могут столкнуться с задержками при навигации по вашему сайту.
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: '...',
});
Параметры
- конфигурация
Возврат
Обещание <BuildResult>
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: ...,
});
Параметры
- конфигурация
Возврат
Обещание < GetManifestResult >
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: '...',
});
Параметры
- конфигурация
Возврат
Обещание <BuildResult>
Модуль 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-код оболочки приложения .
RegExp[] необязательно
Необязательный массив регулярных выражений, ограничивающий URL-адреса, к которым применяется настроенное поведение
navigateFallback
. Это полезно, если только часть URL-адресов вашего сайта следует рассматривать как часть одностраничного приложения . Если настроены обаnavigateFallbackDenylist
иnavigateFallbackAllowlist
, список запретов имеет приоритет.Примечание . Эти регулярные выражения можно оценивать по каждому целевому URL-адресу во время навигации. Избегайте использования сложных регулярных выражений , иначе ваши пользователи могут столкнуться с задержками при навигации по вашему сайту.
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: '...',
});
Параметры
- конфигурация
Возврат
Обещание <BuildResult>
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: ...,
});
Параметры
- конфигурация
Возврат
Обещание < GetManifestResult >
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: '...',
});
Параметры
- конфигурация
Возврат
Обещание <BuildResult>