Параметр verbose и логирование

Библиотека sw-precache предоставляет механизм для автоматической генерации сервис-воркеров с заранее кэшированными ресурсами. Один из ключевых аспектов настройки генерации — контроль вывода информации о процессе кэширования. Именно для этого предназначен параметр verbose.

Основное назначение параметра verbose

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

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

Пример настройки:

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

swPrecache.write('service-worker.js', {
  staticFileGlobs: [
    'dist/**/*.js',
    'dist/**/*.css',
    'dist/**/*.html',
    'dist/images/**/*.{png,jpg,gif,svg}'
  ],
  stripPrefix: 'dist/',
  verbose: true
}, function(error) {
  if (error) {
    console.error('Ошибка генерации service-worker:', error);
  } else {
    console.log('Service-worker успешно создан');
  }
});

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

Структура логирования

При включенном verbose логирование sw-precache делится на несколько ключевых этапов:

  1. Сканирование файловой системы Появляется список всех файлов, удовлетворяющих шаблонам в staticFileGlobs. Пример:

    Found 15 files to cache:
    dist/index.html
    dist/app.js
    dist/styles/main.css
    ...
  2. Обработка исключений и фильтров Если используется параметр dontCacheBustUrlsMatching или другие фильтры, sw-precache логирует файлы, к которым применяются исключения. Это позволяет отследить, какие ресурсы будут загружаться без автоматического кеш-баста.

  3. Генерация service-worker.js Лог выводит размер и количество файлов, включённых в итоговый скрипт сервис-воркера. Например:

    Service worker generated. Total size: 215 KB, Total files: 15
  4. Ошибки и предупреждения Любые ошибки при чтении файлов или записи service-worker.js отображаются в консоли в читаемом виде. Пример:

    Warning: Unable to read dist/images/logo.svg
    Error: Failed to write service-worker.js

Взаимодействие с другими параметрами

Параметр verbose особенно полезен в сочетании с:

  • handleFetch — при включенном логировании видны все обработанные запросы на этапе генерации.
  • runtimeCaching — позволяет отслеживать, какие правила кэширования для динамических запросов будут записаны в service-worker.
  • logger — параметр, который позволяет подменить стандартный вывод sw-precache на кастомную функцию. При verbose: true кастомный логер получает все сообщения о процессе генерации.

Пример кастомного логирования:

swPrecache.write('service-worker.js', {
  staticFileGlobs: ['dist/**/*.js'],
  stripPrefix: 'dist/',
  verbose: true,
  logger: function(message) {
    const timestamp = new Date().toISOString();
    console.log(`[${timestamp}] ${message}`);
  }
});

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

Практическая значимость

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

verbose не влияет на работу сервис-воркера на клиентской стороне. Он полностью ориентирован на разработчика, обеспечивая прозрачность генерации.

Рекомендации по использованию

  • На этапе разработки: устанавливать verbose: true для полной информации о файлах и процессах.
  • На этапе продакшн-сборки: использовать verbose: false, чтобы не загромождать логи и ускорить процесс генерации.

Использование verbose совместно с кастомными логерами позволяет интегрировать sw-precache в сложные пайплайны CI/CD и вести централизованное логирование сборок.