Логирование через параметр verbose

Sw-precache предоставляет удобный механизм для создания сервис-воркеров, автоматически кэширующих статические ресурсы веб-приложений. Один из важных аспектов работы с этой библиотекой — отслеживание процесса генерации сервис-воркера, что реализуется через параметр verbose.

Назначение параметра verbose

Параметр verbose отвечает за степень детализации выводимой информации во время работы Sw-precache. По умолчанию Sw-precache выводит только минимальные сообщения об ошибках и предупреждения. При установке verbose: true происходит расширенное логирование, которое включает:

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

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

Использование verbose в конфигурации

Sw-precache поддерживает два способа задания конфигурации: через объект при вызове API и через CLI. В обоих случаях параметр verbose работает одинаково.

Пример через API:

const swPrecache = require('sw-precache');

swPrecache.write('service-worker.js', {
  staticFileGlobs: [
    'dist/**/*.html',
    'dist/**/*.js',
    'dist/**/*.css',
    'dist/images/**/*.{png,jpg,gif,svg}'
  ],
  stripPrefix: 'dist/',
  verbose: true
});

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

Пример через CLI:

sw-precache --root=dist --static-file-globs="dist/**/*.{html,js,css,png,jpg,gif,svg}" --verbose

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

Формат и структура логов

При verbose: true Sw-precache выводит лог в консоль построчно. Каждая строка содержит:

  1. Тип действияCaching, Skipping, Warning.
  2. Путь к файлу — полный или с применением stripPrefix.
  3. Размер файла — в байтах или килобайтах.
  4. Дополнительные сообщения — ошибки или предупреждения о конфликте.

Пример логов:

Caching file: index.html (3.2 KB)
Caching file: main.js (45 KB)
Skipping file: temp.txt (excluded by pattern)
Warning: duplicate entry for file style.css

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

Применение verbose при сложной конфигурации

В проектах с большим количеством ресурсов логирование становится критически важным для:

  • Проверки корректности шаблонов staticFileGlobs и ignoreUrlParametersMatching.
  • Оптимизации кэшируемых ресурсов, исключения лишних файлов.
  • Отслеживания конфликта имен файлов при работе с различными бандлерами (Webpack, Rollup).

При этом verbose не влияет на финальный функционал сервис-воркера: он только добавляет информационный вывод в консоль.

Ограничения и рекомендации

  • При больших проектах вывод с verbose: true может быть очень объёмным. В таких случаях лог лучше перенаправлять в файл для последующего анализа.
  • Для регулярных сборок на продакшн-сервере рекомендуется устанавливать verbose: false, чтобы избежать засорения логов.
  • verbose совместим со всеми основными опциями Sw-precache, включая runtimeCaching, navigateFallback и stripPrefix.

Пример интеграции с build-процессом

const path = require('path');
const swPrecache = require('sw-precache');

const buildDir = path.join(__dirname, 'dist');

swPrecache.write(path.join(buildDir, 'service-worker.js'), {
  staticFileGlobs: [
    `${buildDir}/**/*.{html,js,css,png,jpg,gif,svg}`
  ],
  stripPrefix: buildDir + '/',
  navigateFallback: '/index.html',
  verbose: true
});

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


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