workbox-webpack-plugin

Workbox دو پلاگین بسته وب را ارائه می دهد: یکی که یک سرویس کار کامل را برای شما ایجاد می کند و دیگری که لیستی از دارایی ها را برای پیش کش ایجاد می کند که به فایل سرویس کارگر تزریق می شود.

پلاگین ها به صورت دو کلاس در ماژول workbox-webpack-plugin به نام های GenerateSW و InjectManifest پیاده سازی می شوند. پاسخ به سوالات زیر می تواند به شما در انتخاب افزونه و پیکربندی مناسب برای استفاده کمک کند.

از کدام افزونه استفاده کنید

GenerateSW

افزونه GenerateSW یک فایل Service Worker برای شما ایجاد می کند و آن را به خط لوله دارایی وب پک اضافه می کند.

زمان استفاده GenerateSW

  • می خواهید فایل ها را پیش کش کنید.
  • شما نیازهای ذخیره سازی در زمان اجرا ساده دارید.

زمانی که GenerateSW استفاده نکنید

  • می‌خواهید از سایر ویژگی‌های Service Worker (به عنوان مثال Web Push ) استفاده کنید.
  • می‌خواهید اسکریپت‌های اضافی را وارد کنید، یا منطق اضافی برای استراتژی‌های کش سفارشی اضافه کنید.

InjectManifest

افزونه InjectManifest لیستی از URL ها را برای پیش کش ایجاد می کند و آن مانیفست پیش کش را به فایل سرویس کارگر موجود اضافه می کند. در غیر این صورت فایل را همانطور که هست باقی می گذارد.

زمان استفاده InjectManifest

  • شما می خواهید کنترل بیشتری بر کارمند خدمات خود داشته باشید.
  • می خواهید فایل ها را پیش کش کنید.
  • شما باید مسیریابی و استراتژی ها را سفارشی کنید.
  • می‌خواهید از سرویس‌کار خود با سایر ویژگی‌های پلتفرم (مانند Web Push ) استفاده کنید.

زمانی که از InjectManifest استفاده نکنید

  • شما می خواهید ساده ترین راه را برای افزودن یک سرویس دهنده به سایت خود داشته باشید.

پلاگین GenerateSW

می توانید افزونه GenerateSW را به پیکربندی بسته وب خود اضافه کنید:

// Inside of webpack.config.js:
const {GenerateSW} = require('workbox-webpack-plugin');

module.exports = {
  // Other webpack config...
  plugins: [
    // Other plugins...
    new GenerateSW({
      // These are some common options, and not all are required.
      // Consult the docs for more info.
      exclude: [/.../, '...'],
      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: ...,
    }),
  ],
};

این یک سرویس‌کار با راه‌اندازی پیش کش برای تمام دارایی‌های بسته وب که توسط پیکربندی شما انتخاب شده‌اند و قوانین ذخیره‌سازی زمان اجرا ارائه شده ایجاد می‌کند.

مجموعه کاملی از گزینه های پیکربندی را می توان در مستندات مرجع یافت.

افزونه InjectManifest

می‌توانید افزونه InjectManifest را به پیکربندی بسته وب خود اضافه کنید:

// Inside of webpack.config.js:
const {InjectManifest} = require('workbox-webpack-plugin');

module.exports = {
  // Other webpack config...
  plugins: [
    // Other plugins...
    new InjectManifest({
      // These are some common options, and not all are required.
      // Consult the docs for more info.
      exclude: [/.../, '...'],
      maximumFileSizeToCacheInBytes: ...,
      swSrc: '...',
    }),
  ],
};

این یک مانیفست پیش کش بر اساس دارایی های بسته وب که توسط پیکربندی شما انتخاب شده است ایجاد می کند و آن را به فایل سرویس کارگر همراه و کامپایل شده شما تزریق می کند.

مجموعه کاملی از گزینه های پیکربندی را می توان در مستندات مرجع یافت.

اطلاعات اضافی

راهنمایی در مورد استفاده از افزونه ها در زمینه ساخت بسته وب بزرگتر را می توان در بخش « برنامه وب پیشرو » از اسناد وب پک یافت.

انواع

GenerateSW

این کلاس از ایجاد یک فایل سرویس کارگر آماده و جدید به عنوان بخشی از فرآیند کامپایل پک وب پشتیبانی می کند.

از یک نمونه از GenerateSW در آرایه plugins یک پیکربندی بسته وب استفاده کنید.

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
new GenerateSW({
  exclude: [/.../, '...'],
  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: ...,
});

خواص

GenerateSWConfig

خواص

  • اضافی ManifestEntries

    (رشته| ManifestEntry )[] اختیاری است

    فهرستی از ورودی‌هایی که باید از پیش ذخیره شوند، علاوه بر هر ورودی که به عنوان بخشی از پیکربندی ساخت ایجاد می‌شود.

  • babelPresetEnvTargets

    رشته[] اختیاری است

    مقدار پیش‌فرض این است: ["chrome >= 56"]

    اهداف برای انتقال به babel-preset-env هنگام انتقال بسته سرویس کارگر.

  • cacheId

    رشته اختیاری

    یک شناسه اختیاری که باید به نام‌های حافظه پنهان اضافه شود. این در درجه اول برای توسعه محلی مفید است که در آن چندین سایت ممکن است از یک منبع http://localhost:port ارائه شوند.

  • تکه ها

    رشته[] اختیاری است

    یک یا چند نام تکه‌ای که فایل‌های خروجی مربوطه باید در مانیفست پیش کش گنجانده شوند.

  • cleanupOutdatedCaches

    بولی اختیاری

    مقدار پیش فرض این است: false

    اینکه آیا Workbox باید تلاش کند تا هر پیش کش ایجاد شده توسط نسخه های قدیمی تر و ناسازگار را شناسایی و حذف کند.

  • ادعای مشتریان

    بولی اختیاری

    مقدار پیش فرض این است: false

    اینکه آیا کارمند سرویس باید به محض فعال شدن، کنترل هر یک از مشتریان موجود را شروع کند یا خیر.

  • فهرست فهرست

    رشته اختیاری

    اگر یک درخواست پیمایش برای یک URL که به / ختم می شود با URL از پیش ذخیره شده مطابقت نداشته باشد، این مقدار به URL اضافه می شود و برای تطابق پیش کش بررسی می شود. این باید به چیزی تنظیم شود که سرور وب شما برای فهرست فهرست خود از آن استفاده می کند.

  • غیرفعال کردن DevLogs

    بولی اختیاری

    مقدار پیش فرض این است: false

  • dontCacheBustURLsMatching

    RegExp اختیاری است

    دارایی‌هایی که با این مطابقت دارند فرض می‌شوند که به‌طور منحصربه‌فرد از طریق URL خود نسخه‌بندی شده‌اند و از تخریب حافظه پنهان HTTP که هنگام پر کردن پیش کش انجام می‌شود مستثنی هستند. اگرچه لازم نیست، توصیه می شود که اگر فرآیند ساخت موجود شما قبلاً یک مقدار [hash] را در هر نام فایل وارد کرده است، یک RegExp ارائه دهید که آن را تشخیص می دهد، زیرا پهنای باند مصرف شده هنگام پیش کش را کاهش می دهد.

  • حذف کردن

    (رشته|RegExp|تابع)[] اختیاری است

    یک یا چند مشخص کننده برای حذف دارایی ها از مانیفست پیش کش استفاده می شود. این با پیروی از قوانین مشابه با گزینه استاندارد exclude webpack تفسیر می شود. اگر ارائه نشده باشد، مقدار پیش‌فرض [/\.map$/, /^manifest.*\.js$] است.

  • ExcludeChunks

    رشته[] اختیاری است

    یک یا چند نام تکه ای که فایل های خروجی مربوطه آنها باید از مانیفست پیش کش حذف شوند.

  • ignoreURLParametersMatching

    RegExp[] اختیاری است

    هر نام پارامتر جستجو که با یکی از RegExp در این آرایه مطابقت داشته باشد، قبل از جستجو برای تطبیق پیش کش حذف خواهد شد. اگر کاربران شما ممکن است URL هایی را درخواست کنند که شامل پارامترهای URL هستند که برای ردیابی منبع ترافیک استفاده می شوند. اگر ارائه نشده باشد، مقدار پیش‌فرض [/^utm_/, /^fbclid$/] است.

  • importScripts

    رشته[] اختیاری است

    فهرستی از فایل‌های جاوا اسکریپت که باید به importScripts() در داخل فایل service worker تولید شده ارسال شوند. این زمانی مفید است که می‌خواهید به Workbox اجازه دهید فایل سرویس‌کار سطح بالای شما را ایجاد کند، اما می‌خواهید کدهای اضافی مانند شنونده رویدادهای فشاری را در آن اضافه کنید.

  • importScriptsViaChunks

    رشته[] اختیاری است

    یک یا چند نام از تکه های بسته وب. محتوای آن تکه ها از طریق فراخوانی به importScripts() در سرویس کارگر تولید شده گنجانده می شود.

  • عبارتند از

    (رشته|RegExp|تابع)[] اختیاری است

    یک یا چند مشخص کننده برای گنجاندن دارایی ها در مانیفست پیش کش استفاده می شود. این با پیروی از همان قوانینی که گزینه include استاندارد webpack تفسیر می شود.

  • inlineWorkboxRuntime

    بولی اختیاری

    مقدار پیش فرض این است: false

    آیا کد زمان اجرا برای کتابخانه Workbox باید در سرویس‌کار سطح بالا گنجانده شود یا به یک فایل جداگانه تقسیم شود که باید در کنار سرویس‌کار مستقر شود. جدا نگه داشتن زمان اجرا به این معنی است که کاربران مجبور نیستند هر بار که سرویس دهنده سطح بالای شما تغییر می کند، کد Workbox را دوباره دانلود کنند.

  • نوشته های مانیفست

    ManifestEntry [] اختیاری است

  • manifest Transforms می کند

    ManifestTransform [] اختیاری است

    یک یا چند تابع که به صورت متوالی در برابر مانیفست تولید شده اعمال می شوند. اگر modifyURLPrefix یا dontCacheBustURLsMatching نیز مشخص شده باشد، ابتدا تبدیل‌های مربوط به آنها اعمال می‌شود.

  • MaximumFileSizeToCacheInBytes

    شماره اختیاری

    مقدار پیش فرض: 2097152 است

    از این مقدار می توان برای تعیین حداکثر اندازه فایل هایی که از قبل ذخیره می شوند استفاده کرد. این از شما جلوگیری می کند که به طور ناخواسته فایل های بسیار بزرگی را که ممکن است به طور تصادفی با یکی از الگوهای شما مطابقت داشته باشند، پیش کش کنید.

  • حالت

    رشته اختیاری

    اگر روی "تولید" تنظیم شود، یک بسته سرویس بهینه سازی شده که اطلاعات اشکال زدایی را حذف نمی کند، تولید می شود. اگر به صراحت در اینجا پیکربندی نشده باشد، از مقدار mode پیکربندی شده در مجموعه webpack فعلی استفاده خواهد شد.

  • modifyURLPrefix

    شی اختیاری

    پیشوندهای رشته نگاشت شیء به مقادیر رشته جایگزین می شود. اگر تنظیمات میزبانی وب شما با تنظیمات سیستم فایل محلی شما مطابقت نداشته باشد، می‌توان از آن برای حذف یا افزودن پیشوند مسیر از ورودی مانیفست استفاده کرد. به عنوان یک جایگزین با انعطاف‌پذیری بیشتر، می‌توانید از گزینه manifestTransforms استفاده کنید و تابعی را ارائه کنید که ورودی‌های مانیفست را با استفاده از هر منطقی که ارائه می‌کنید تغییر می‌دهد.

    مثال استفاده:

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

    رشته اختیاری

    مقدار پیش فرض این است: null

    اگر مشخص شده باشد، تمام درخواست‌های پیمایش برای URLهایی که از پیش ذخیره نشده‌اند، با HTML موجود در URL ارائه‌شده انجام می‌شوند. شما باید URL یک سند HTML را که در مانیفست پیش کش شما فهرست شده است، ارسال کنید. این به معنای استفاده در سناریوی برنامه تک صفحه است، که در آن شما می‌خواهید همه پیمایش‌ها از HTML رایج App Shell استفاده کنند.

  • navigateFallbackAllowlist

    RegExp[] اختیاری است

    آرایه‌ای اختیاری از عبارات منظم که رفتار پیکربندی‌شده navigateFallback را محدود می‌کند. این در صورتی مفید است که فقط زیر مجموعه ای از URL های سایت شما باید به عنوان بخشی از یک برنامه یک صفحه تلقی شوند. اگر هر دو navigateFallbackDenylist و navigateFallbackAllowlist پیکربندی شده باشند، فهرست انکار مقدم است.

    توجه : این RegExps ممکن است در طول یک پیمایش در برابر هر URL مقصد ارزیابی شود. از استفاده از RegExps پیچیده خودداری کنید، در غیر این صورت کاربران شما ممکن است در هنگام پیمایش سایت شما با تاخیر مواجه شوند.

  • navigateFallbackDenylist

    RegExp[] اختیاری است

    آرایه‌ای اختیاری از عبارات منظم که رفتار پیکربندی‌شده navigateFallback را محدود می‌کند. این در صورتی مفید است که فقط زیر مجموعه ای از URL های سایت شما باید به عنوان بخشی از یک برنامه یک صفحه تلقی شوند. اگر هر دو navigateFallbackDenylist و navigateFallbackAllowlist پیکربندی شده باشند، فهرست انکار اولویت دارد.

    توجه : این RegExps ممکن است در طول یک پیمایش در برابر هر URL مقصد ارزیابی شود. از استفاده از RegExps پیچیده خودداری کنید، در غیر این صورت کاربران شما ممکن است در هنگام پیمایش سایت شما با تاخیر مواجه شوند.

  • ناوبری پیش بارگیری

    بولی اختیاری

    مقدار پیش فرض این است: false

    فعال کردن پیش‌بارگذاری ناوبری در سرویس‌کار تولید شده یا خیر. هنگامی که روی true تنظیم می شود، باید از runtimeCaching نیز برای تنظیم یک استراتژی پاسخ مناسب استفاده کنید که با درخواست های ناوبری مطابقت داشته باشد و از پاسخ از پیش بارگذاری شده استفاده کنید.

  • آفلاین GoogleAnalytics

    بولی| GoogleAnalyticsInitializeOptions اختیاری است

    مقدار پیش فرض این است: false

    کنترل می کند که آیا پشتیبانی از Google Analytics آفلاین را شامل شود یا خیر. هنگامی که true ، فراخوانی initialize() 's workbox-google-analytics به سرویس کار تولید شده شما اضافه می شود. وقتی روی یک Object تنظیم شود، آن شی به فراخوانی initialize() ارسال می شود و به شما امکان می دهد رفتار را سفارشی کنید.

  • runtimeCaching

    RuntimeCaching [] اختیاری است

    وقتی از ابزارهای ساخت Workbox برای تولید سرویس‌کار خود استفاده می‌کنید، می‌توانید یک یا چند پیکربندی کش زمان اجرا را مشخص کنید. سپس با استفاده از پیکربندی تطبیق و کنترلر که شما تعریف کرده‌اید، اینها به تماس‌های workbox-routing.registerRoute ترجمه می‌شوند.

    برای همه گزینه‌ها، به مستندات workbox-build.RuntimeCaching مراجعه کنید. مثال زیر یک پیکربندی معمولی را نشان می دهد که دو مسیر زمان اجرا تعریف شده است:

  • skipWaiting

    بولی اختیاری

    مقدار پیش فرض این است: false

    آیا برای افزودن یک تماس بدون قید و شرط به skipWaiting() به سرویس کارگر تولید شده. اگر false ، به جای آن یک شنونده message اضافه می‌شود که به صفحات سرویس گیرنده اجازه می‌دهد skipWaiting() با فراخوانی postMessage({type: 'SKIP_WAITING'}) روی یک سرویس‌دهنده منتظر راه‌اندازی کنند.

  • نقشه منبع

    بولی اختیاری

    مقدار پیش فرض: true است

    آیا برای ایجاد یک نقشه منبع برای فایل های سرویس کارگر تولید شده.

  • swDest

    رشته اختیاری

    مقدار پیش فرض این است: "service-worker.js"

    نام دارایی فایل Service Worker ایجاد شده توسط این افزونه.

InjectManifest

این کلاس از کامپایل یک فایل Service Worker ارائه شده از طریق swSrc و تزریق لیستی از URL ها و اطلاعات ویرایش به آن سرویس دهنده برای پیش کش بر اساس خط لوله دارایی وب پک پشتیبانی می کند.

از نمونه ای از InjectManifest در آرایه plugins یک پیکربندی بسته وب استفاده کنید.

این افزونه علاوه بر تزریق مانیفست، کامپایل فایل swSrc را با استفاده از گزینه‌های پیکربندی بسته وب اصلی انجام می‌دهد.

// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
new InjectManifest({
  exclude: [/.../, '...'],
  maximumFileSizeToCacheInBytes: ...,
  swSrc: '...',
});

خواص

خواص

default

تایپ کنید

هدف - شی

خواص

  • GenerateSW

    پرس و جو

  • InjectManifest

    پرس و جو