โมดูล workbox-build จะผสานรวมเข้ากับกระบวนการบิลด์ที่อิงตามโหนด และสามารถสร้าง Service Worker ทั้งหมด หรือสร้างเพียงรายการชิ้นงานเพื่อแคชล่วงหน้าซึ่งสามารถใช้ภายใน Service Worker ที่มีอยู่
โหมด 2 โหมดที่นักพัฒนาแอปส่วนใหญ่จะใช้คือ generateSW และ injectManifest คำตอบของคำถามต่อไปนี้จะช่วยให้คุณเลือกโหมดและการกำหนดค่าที่เหมาะสมเพื่อใช้งานได้
โหมดที่ควรใช้
generateSW
generateSW จะสร้างไฟล์ Service Worker ให้คุณ ซึ่งปรับแต่งผ่านตัวเลือกการกำหนดค่า และเขียนลงในดิสก์
กรณีที่ควรใช้ generateSW
- คุณต้องการแคชไฟล์ล่วงหน้า
- คุณต้องการแคชรันไทม์แบบง่าย
กรณีที่ไม่ควรใช้ generateSW
- คุณต้องการใช้ฟีเจอร์อื่นๆ ของ Service Worker (เช่น Web Push)
- คุณต้องการนำเข้าสคริปต์เพิ่มเติม หรือเพิ่มตรรกะเพิ่มเติมสำหรับกลยุทธ์การแคชที่กำหนดเอง
injectManifest
โหมด injectManifest จะสร้างรายการ URL เพื่อแคชล่วงหน้า และเพิ่มไฟล์ Manifest ของแคชล่วงหน้านั้นลงในไฟล์ Service Worker ที่มีอยู่ ไม่เช่นนั้นระบบจะปล่อยให้ไฟล์เป็นไปตามเดิม
กรณีที่ควรใช้ injectManifest
- คุณต้องการควบคุม Service Worker มากขึ้น
- คุณต้องการแคชไฟล์ล่วงหน้า
- คุณต้องปรับแต่งการกำหนดเส้นทางและกลยุทธ์
- คุณต้องการใช้ Service Worker กับฟีเจอร์อื่นๆ ของแพลตฟอร์ม (เช่น Web Push)
กรณีที่ไม่ควรใช้ injectManifest
- คุณต้องการเส้นทางที่ง่ายที่สุดในการเพิ่ม Service Worker ลงในเว็บไซต์
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.`);
});
ซึ่งจะสร้าง Service Worker ที่มีการตั้งค่าแคชล่วงหน้าสำหรับไฟล์ทั้งหมดที่การกำหนดค่าเลือกไว้ รวมถึงกฎการแคชรันไทม์ที่ระบุ
ดูชุดตัวเลือกการกำหนดค่าทั้งหมดได้ในเอกสารอ้างอิง
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.`);
});
ซึ่งจะเป็นการสร้างไฟล์ Manifest สำหรับแคชล่วงหน้าตามไฟล์ที่การกำหนดค่าเลือกไว้ และแทรกลงในไฟล์ Service Worker ที่มีอยู่
ดูชุดตัวเลือกการกำหนดค่าทั้งหมดได้ในเอกสารอ้างอิง
โหมดเพิ่มเติม
เราคาดว่า generateSW หรือ injectManifest จะตอบโจทย์ความต้องการของนักพัฒนาแอปส่วนใหญ่ อย่างไรก็ตาม workbox-build ยังรองรับโหมดอื่นที่อาจเหมาะสมกับกรณีการใช้งานบางอย่าง
getManifest โหมด
ซึ่งในเชิงแนวคิดจะคล้ายกับinjectManifestโหมด แต่แทนที่จะเพิ่มไฟล์ Manifest ลงใน Service Worker ของแหล่งที่มา ฟังก์ชันนี้จะแสดงผลอาร์เรย์ของรายการ Manifest พร้อมกับข้อมูลเกี่ยวกับจำนวนรายการและขนาดทั้งหมด
คุณใช้โหมด 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
พร็อพเพอร์ตี้
-
additionalManifestEntries
(string | ManifestEntry)[] ไม่บังคับ
รายการของรายการที่จะแคชล่วงหน้า นอกเหนือจากรายการที่ สร้างขึ้นเป็นส่วนหนึ่งของการกำหนดค่าบิลด์
-
dontCacheBustURLsMatching
นิพจน์ทั่วไป ไม่บังคับ
ระบบจะถือว่าชิ้นงานที่ตรงกันนี้เป็นเวอร์ชันที่ไม่ซ้ำกันผ่าน URL และได้รับการยกเว้นจากการล้างแคช HTTP ตามปกติซึ่งจะดำเนินการเมื่อป้อนข้อมูลแคชล่วงหน้า แม้ว่าจะไม่จำเป็น แต่ขอแนะนำว่าหากกระบวนการบิลด์ที่มีอยู่แทรกค่า
[hash]ลงในชื่อไฟล์แต่ละชื่ออยู่แล้ว คุณควรระบุนิพจน์ทั่วไปที่จะตรวจหาค่าดังกล่าว เนื่องจากจะช่วยลดแบนด์วิดท์ ที่ใช้เมื่อแคชล่วงหน้า -
manifestTransforms
ManifestTransform[] ไม่บังคับ
ฟังก์ชันอย่างน้อย 1 รายการที่จะนำไปใช้ตามลำดับกับไฟล์ Manifest ที่สร้างขึ้น หากระบุ
modifyURLPrefixหรือdontCacheBustURLsMatchingด้วย ระบบจะใช้การเปลี่ยนรูปแบบที่เกี่ยวข้องก่อน -
maximumFileSizeToCacheInBytes
หมายเลข ไม่บังคับ
ค่าเริ่มต้นคือ 2097152
ค่านี้ใช้เพื่อกำหนดขนาดสูงสุดของไฟล์ที่จะ แคชล่วงหน้าได้ ซึ่งจะช่วยป้องกันไม่ให้คุณแคชล่วงหน้าไฟล์ขนาดใหญ่มากโดยไม่ตั้งใจ ซึ่งอาจตรงกับรูปแบบใดรูปแบบหนึ่งของคุณโดยไม่ตั้งใจ
-
modifyURLPrefix
ออบเจ็กต์ ไม่บังคับ
สตริงการแมปออบเจ็กต์กับค่าสตริงแทนที่ ซึ่งสามารถใช้เพื่อนำคำนำหน้าเส้นทางออกจากรายการในไฟล์ Manifest หรือเพิ่มคำนำหน้าเส้นทางได้ เช่น หากการตั้งค่าเว็บโฮสติ้งไม่ตรงกับการตั้งค่าระบบไฟล์ในเครื่อง คุณสามารถใช้
manifestTransformsแทนและให้ฟังก์ชันที่แก้ไขรายการในไฟล์ Manifest โดยใช้ตรรกะที่คุณระบุตัวอย่างการใช้งาน
// Replace a '/dist/' prefix with '/', and also prepend // '/static' to every URL. modifyURLPrefix: { '/dist/': '/', '': '/static', }
BuildResult
ประเภท
Omit<GetManifestResult"manifestEntries"
> & object
พร็อพเพอร์ตี้
-
filePaths
string[]
GeneratePartial
พร็อพเพอร์ตี้
-
babelPresetEnvTargets
string[] ไม่บังคับ
ค่าเริ่มต้นคือ ["chrome >= 56"]
เป้าหมายที่จะส่งไปยัง
babel-preset-envเมื่อแปลงรหัส Service Worker -
cacheId
สตริง ไม่บังคับ
รหัสที่ไม่บังคับที่จะนำหน้าชื่อแคช ซึ่งมีประโยชน์หลักๆ สำหรับ การพัฒนาในเครื่องที่อาจมีการแสดงเว็บไซต์หลายแห่งจาก
http://localhost:portต้นทางเดียวกัน -
cleanupOutdatedCaches
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ false
Workbox ควรพยายามระบุและลบแคชล่วงหน้า ที่สร้างโดยเวอร์ชันเก่าที่ไม่รองรับหรือไม่
-
clientsClaim
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ false
ไม่ว่า Service Worker ควรเริ่มควบคุม ไคลเอ็นต์ที่มีอยู่ทันทีที่เปิดใช้งานหรือไม่
-
directoryIndex
สตริง ไม่บังคับ
หากคำขอการนำทางสำหรับ URL ที่ลงท้ายด้วย
/ไม่ตรงกับ URL ที่แคชไว้ล่วงหน้า ระบบจะต่อท้ายค่านี้กับ URL และตรวจสอบว่ามี การแคชไว้ล่วงหน้าหรือไม่ ควรตั้งค่านี้เป็นค่าที่เว็บเซิร์ฟเวอร์ใช้สำหรับ ดัชนีไดเรกทอรี -
disableDevLogs
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ false
-
ignoreURLParametersMatching
RegExp[] ไม่บังคับ
ระบบจะนำชื่อพารามิเตอร์การค้นหาที่ตรงกับนิพจน์ทั่วไปรายการใดรายการหนึ่งในอาร์เรย์นี้ออกก่อนที่จะค้นหารายการที่ตรงกันในแคชล่วงหน้า ซึ่งจะเป็นประโยชน์ หากผู้ใช้อาจขอ URL ที่มี เช่น พารามิเตอร์ของ URL ที่ใช้เพื่อติดตามแหล่งที่มาของการเข้าชม หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น
[/^utm_/, /^fbclid$/] -
importScripts
string[] ไม่บังคับ
รายการไฟล์ JavaScript ที่ควรส่งไปยัง
importScripts()ภายในไฟล์ Service Worker ที่สร้างขึ้น ซึ่งจะเป็นประโยชน์เมื่อคุณต้องการ ให้ Workbox สร้างไฟล์ Service Worker ระดับบนสุด แต่ต้องการรวม โค้ดเพิ่มเติมบางอย่าง เช่น ตัวตรวจหาเหตุการณ์พุช -
inlineWorkboxRuntime
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ false
ควรรวมโค้ดรันไทม์สำหรับไลบรารี Workbox ไว้ใน Service Worker ระดับบนสุด หรือแยกเป็นไฟล์ต่างหากที่ต้อง ติดตั้งใช้งานควบคู่กับ Service Worker การแยกเวลาเรียกใช้หมายความว่า ผู้ใช้ไม่ต้องดาวน์โหลดโค้ด Workbox อีกครั้งทุกครั้งที่ Service Worker ระดับบนสุดมีการเปลี่ยนแปลง
-
โหมด
สตริง ไม่บังคับ
ค่าเริ่มต้นคือ "production"
หากตั้งค่าเป็น "production" ระบบจะสร้างชุด Service Worker ที่เพิ่มประสิทธิภาพซึ่ง ไม่รวมข้อมูลการแก้ไขข้อบกพร่อง หากไม่ได้กำหนดค่าอย่างชัดเจนที่นี่ ระบบจะใช้ค่า
process.env.NODE_ENVและหากใช้ไม่ได้ ระบบจะ เปลี่ยนไปใช้'production' -
สตริง ไม่บังคับ
ค่าเริ่มต้นคือ null
หากมีการระบุ ระบบจะดำเนินการตาม คำขอการนำทาง ทั้งหมดสำหรับ URL ที่ไม่ได้แคชล่วงหน้าด้วย HTML ที่ URL ที่ระบุ คุณต้องส่ง URL ของเอกสาร HTML ที่แสดงอยู่ใน ไฟล์ Manifest ของการแคชล่วงหน้า ซึ่งมีไว้ใช้ในสถานการณ์ของ Single Page App ที่คุณต้องการให้การนำทางทั้งหมดใช้ App Shell HTML ทั่วไป
-
RegExp[] ไม่บังคับ
อาร์เรย์นิพจน์ทั่วไปที่ไม่บังคับซึ่งจำกัด URL ที่ลักษณะการทำงานของ
navigateFallbackที่กำหนดค่าไว้จะมีผล ซึ่งจะมีประโยชน์หากควรพิจารณาเฉพาะชุดย่อยของ URL ในเว็บไซต์ว่าเป็นส่วนหนึ่งของ Single Page App หากกำหนดค่าทั้งnavigateFallbackDenylistและnavigateFallbackAllowlistไว้ บัญชีดำจะมีลำดับความสำคัญสูงกว่าหมายเหตุ: ระบบอาจประเมินนิพจน์ทั่วไปเหล่านี้กับ URL ปลายทางทุกรายการในระหว่าง การนำทาง หลีกเลี่ยงการใช้ นิพจน์ทั่วไปที่ซับซ้อน มิเช่นนั้นผู้ใช้อาจพบความล่าช้าเมื่อไปยังส่วนต่างๆ ของเว็บไซต์
-
RegExp[] ไม่บังคับ
อาร์เรย์นิพจน์ทั่วไปที่ไม่บังคับซึ่งจำกัด URL ที่ลักษณะการทำงานของ
navigateFallbackที่กำหนดค่าไว้จะมีผล ซึ่งจะมีประโยชน์หากควรปฏิบัติต่อเฉพาะชุดย่อยของ URL ของเว็บไซต์ให้เป็นส่วนหนึ่งของ Single Page App หากกำหนดค่าทั้งnavigateFallbackDenylistและnavigateFallbackAllowlistไว้ บัญชีดำจะมีลำดับความสำคัญสูงกว่าหมายเหตุ: ระบบอาจประเมินนิพจน์ทั่วไปเหล่านี้กับ URL ปลายทางทุกรายการในระหว่าง การนำทาง หลีกเลี่ยงการใช้ นิพจน์ทั่วไปที่ซับซ้อน มิเช่นนั้นผู้ใช้อาจพบความล่าช้าเมื่อไปยังส่วนต่างๆ ของเว็บไซต์
-
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ false
เลือกว่าจะเปิดใช้การโหลดล่วงหน้าของการนำทาง ใน Service Worker ที่สร้างขึ้นหรือไม่ เมื่อตั้งค่าเป็น "จริง" คุณต้องใช้
runtimeCachingเพื่อตั้งค่ากลยุทธ์การตอบกลับที่เหมาะสมซึ่งจะตรงกับ คำขอการนำทาง และใช้ประโยชน์จากการตอบกลับที่โหลดล่วงหน้า -
offlineGoogleAnalytics
boolean | GoogleAnalyticsInitializeOptions ไม่บังคับ
ค่าเริ่มต้นคือ false
ควบคุมว่าจะรวมการรองรับ Google Analytics แบบออฟไลน์ หรือไม่ เมื่อ
trueระบบจะเพิ่มการโทรไปยังworkbox-google-analyticsของinitialize()ลงใน Service Worker ที่สร้างขึ้น เมื่อตั้งค่าเป็นObjectระบบจะส่งออบเจ็กต์นั้นไปยังการเรียกinitialize()ซึ่งช่วยให้คุณปรับแต่งลักษณะการทำงานได้ -
runtimeCaching
RuntimeCaching[] ไม่บังคับ
เมื่อใช้เครื่องมือบิลด์ของ Workbox เพื่อสร้าง Service Worker คุณจะระบุการกำหนดค่าแคชรันไทม์อย่างน้อย 1 รายการได้ จากนั้นระบบจะแปลเป็นคำสั่งเรียก
workbox-routing.registerRouteโดยใช้การกำหนดค่าการจับคู่ และตัวแฮนเดิลที่คุณกำหนดดูตัวเลือกทั้งหมดได้ใน
workbox-build.RuntimeCachingเอกสารประกอบ ตัวอย่างด้านล่างแสดงการกำหนดค่าทั่วไปที่มีการกำหนดเส้นทางรันไทม์ 2 เส้นทาง -
skipWaiting
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ false
จะเพิ่มการเรียกแบบไม่มีเงื่อนไขไปยัง
skipWaiting()ไปยัง Service Worker ที่สร้างขึ้นหรือไม่ หากเป็นfalseระบบจะเพิ่มเครื่องมือฟังmessageแทน ซึ่งจะช่วยให้หน้าไคลเอ็นต์ทริกเกอร์skipWaiting()ได้โดยการเรียกpostMessage({type: 'SKIP_WAITING'})ใน Service Worker ที่รออยู่ -
sourcemap
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ true
จะสร้าง Sourcemap สำหรับไฟล์ Service Worker ที่สร้างขึ้นหรือไม่
GenerateSWOptions
ประเภท
GetManifestOptions
ประเภท
GetManifestResult
พร็อพเพอร์ตี้
-
จำนวน
ตัวเลข
-
manifestEntries
-
ขนาด
ตัวเลข
-
คำเตือน
string[]
GlobPartial
พร็อพเพอร์ตี้
-
globFollow
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ true
กำหนดว่าจะติดตาม Symlink หรือไม่เมื่อสร้าง ไฟล์ Manifest ของแคชล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่คำจำกัดความของ
followในglobเอกสารประกอบ -
globIgnores
string[] ไม่บังคับ
ค่าเริ่มต้นคือ ["**\/node_modules\/**\/*"]
ชุดรูปแบบที่ตรงกับไฟล์ที่จะยกเว้นเสมอเมื่อสร้าง ไฟล์ Manifest ของแคชล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่คำจำกัดความของ
ignoreในglobเอกสารประกอบ -
globPatterns
string[] ไม่บังคับ
ค่าเริ่มต้นคือ ["**\/*.{js,wasm,css,html}"]
ไฟล์ที่ตรงกับรูปแบบใดรูปแบบหนึ่งเหล่านี้จะรวมอยู่ในไฟล์ Manifest ของการแคชล่วงหน้า ดูข้อมูลเพิ่มเติมได้ที่
globข้อมูลเบื้องต้น -
templatedURLs
ออบเจ็กต์ ไม่บังคับ
หาก URL แสดงผลตามตรรกะฝั่งเซิร์ฟเวอร์ เนื้อหาของ URL อาจ ขึ้นอยู่กับไฟล์หลายไฟล์หรือค่าสตริงที่ไม่ซ้ำกันอื่นๆ คีย์ในออบเจ็กต์นี้คือ URL ที่ฝั่งเซิร์ฟเวอร์แสดงผล หากค่าเป็นอาร์เรย์ของสตริง ระบบจะตีความค่าเหล่านั้นเป็นรูปแบบ
globและจะใช้เนื้อหาของไฟล์ใดๆ ที่ตรงกับรูปแบบเพื่อกำหนดเวอร์ชัน URL ที่ไม่ซ้ำกัน หากใช้กับสตริงเดียว ระบบจะตีความว่าเป็นข้อมูลการกำหนดเวอร์ชันที่ไม่ซ้ำกัน ซึ่งคุณสร้างขึ้นสำหรับ URL ที่ระบุ
InjectManifestOptions
ประเภท
InjectPartial
พร็อพเพอร์ตี้
-
injectionPoint
สตริง ไม่บังคับ
ค่าเริ่มต้นคือ "self.__WB_MANIFEST"
สตริงที่จะค้นหาภายในไฟล์
swSrcเมื่อพบแล้ว ระบบจะแทนที่ด้วยไฟล์ Manifest ของการแคชล่วงหน้าที่สร้างขึ้น -
swSrc
สตริง
เส้นทางและชื่อไฟล์ของ Service Worker ที่จะอ่านในระหว่าง กระบวนการบิลด์ ซึ่งสัมพันธ์กับไดเรกทอรีการทำงานปัจจุบัน
ManifestEntry
พร็อพเพอร์ตี้
-
ความสมบูรณ์
สตริง ไม่บังคับ
-
revision
สตริง
-
URL
สตริง
ManifestTransform()
workbox-build.ManifestTransform(
manifestEntries: (ManifestEntry & object)[],
compilation?: unknown,
): Promise<ManifestTransformResult> | ManifestTransformResult
ประเภท
ฟังก์ชัน
พารามิเตอร์
-
manifestEntries
(ManifestEntry & object)[]
-
ขนาด
ตัวเลข
-
-
การรวบรวม
ไม่ทราบ ไม่บังคับ
การคืนสินค้า
-
Promise<ManifestTransformResult> | ManifestTransformResult
ManifestTransformResult
พร็อพเพอร์ตี้
-
ไฟล์ Manifest
(ManifestEntry & object)[]
-
ขนาด
ตัวเลข
-
-
คำเตือน
string[] ไม่บังคับ
OptionalGlobDirectoryPartial
พร็อพเพอร์ตี้
-
globDirectory
สตริง ไม่บังคับ
ไดเรกทอรีในเครื่องที่คุณต้องการจับคู่กับ
globPatternsเส้นทางนี้ เกี่ยวข้องกับไดเรกทอรีปัจจุบัน
RequiredGlobDirectoryPartial
พร็อพเพอร์ตี้
-
globDirectory
สตริง
ไดเรกทอรีในเครื่องที่คุณต้องการจับคู่กับ
globPatternsเส้นทางนี้ เกี่ยวข้องกับไดเรกทอรีปัจจุบัน
RequiredSWDestPartial
พร็อพเพอร์ตี้
-
swDest
สตริง
เส้นทางและชื่อไฟล์ของ Service Worker ที่กระบวนการบิลด์จะสร้างขึ้น โดยสัมพันธ์กับไดเรกทอรีการทำงานปัจจุบัน ต้องลงท้ายด้วย ".js"
RuntimeCaching
พร็อพเพอร์ตี้
-
ตัวแฮนเดิล
ซึ่งจะกำหนดวิธีที่เส้นทางรันไทม์จะสร้างการตอบกลับ หากต้องการใช้
workbox-strategiesที่มีอยู่ ให้ระบุชื่อของworkbox-strategiesนั้น เช่น'NetworkFirst'หรืออาจเป็นฟังก์ชันworkbox-core.RouteHandlerเรียกกลับ ที่มีตรรกะการตอบกลับที่กำหนดเอง -
method
HTTPMethod ไม่บังคับ
ค่าเริ่มต้นคือ "GET"
เมธอด HTTP ที่จะใช้จับคู่ โดยปกติค่าเริ่มต้นของ
'GET'จะเพียงพอ เว้นแต่คุณจะต้องจับคู่'POST','PUT'หรือ คำขอประเภทอื่นอย่างชัดเจน -
ตัวเลือก
ออบเจ็กต์ ไม่บังคับ
-
backgroundSync
ออบเจ็กต์ ไม่บังคับ
การกำหนดค่านี้จะเพิ่มอินสแตนซ์
workbox-background-sync.BackgroundSyncPluginไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler-
ชื่อ
สตริง
-
ตัวเลือก
QueueOptions ไม่บังคับ
-
-
broadcastUpdate
ออบเจ็กต์ ไม่บังคับ
การกำหนดค่านี้จะเพิ่มอินสแตนซ์
workbox-broadcast-update.BroadcastUpdatePluginไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler-
channelName
สตริง ไม่บังคับ
-
ตัวเลือก
-
-
cacheName
สตริง ไม่บังคับ
หากระบุไว้ ระบบจะตั้งค่าพร็อพเพอร์ตี้
cacheNameของworkbox-strategiesที่กำหนดค่าไว้ในhandler -
cacheableResponse
CacheableResponseOptions ไม่บังคับ
การกำหนดค่านี้จะเพิ่มอินสแตนซ์
workbox-cacheable-response.CacheableResponsePluginไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler -
วันหมดอายุ
ExpirationPluginOptions ไม่บังคับ
การกำหนดค่านี้จะเพิ่มอินสแตนซ์
workbox-expiration.ExpirationPluginไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler -
fetchOptions
RequestInit ไม่บังคับ
การกำหนดค่านี้จะส่งค่า
fetchOptionsไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler -
matchOptions
CacheQueryOptions ไม่บังคับ
การกำหนดค่านี้จะส่งค่า
matchOptionsไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler -
networkTimeoutSeconds
หมายเลข ไม่บังคับ
หากระบุไว้ ระบบจะตั้งค่าพร็อพเพอร์ตี้
networkTimeoutSecondsของworkbox-strategiesที่กำหนดค่าไว้ในhandlerโปรดทราบว่ามีเพียง'NetworkFirst'และ'NetworkOnly'เท่านั้นที่รองรับnetworkTimeoutSeconds -
ปลั๊กอิน
WorkboxPlugin[] ไม่บังคับ
การกำหนดค่านี้จะช่วยให้ใช้ปลั๊กอิน Workbox อย่างน้อย 1 รายการที่ไม่มีตัวเลือก "ทางลัด" (เช่น
expirationสำหรับworkbox-expiration.ExpirationPlugin) ได้ ระบบจะเพิ่มปลั๊กอินที่ระบุไว้ที่นี่ลงในworkbox-strategiesที่กำหนดค่าไว้ในhandler -
precacheFallback
ออบเจ็กต์ ไม่บังคับ
การกำหนดค่านี้จะเพิ่มอินสแตนซ์
workbox-precaching.PrecacheFallbackPluginไปยังworkbox-strategiesที่กำหนดค่าไว้ในhandler-
fallbackURL
สตริง
-
-
rangeRequests
บูลีน ไม่บังคับ
การเปิดใช้ตัวเลือกนี้จะเพิ่มอินสแตนซ์
workbox-range-requests.RangeRequestsPluginลงในworkbox-strategiesที่กำหนดค่าไว้ในhandler
-
-
urlPattern
string | RegExp | RouteMatchCallback
เกณฑ์การจับคู่นี้จะกำหนดว่าตัวแฮนเดิลที่กำหนดค่าไว้จะสร้างการตอบกลับสำหรับคำขอใดก็ตามที่ไม่ตรงกับ URL ที่แคชไว้ล่วงหน้าหรือไม่ หากมีการกำหนดเส้นทาง
RuntimeCachingหลายเส้นทาง เส้นทางแรกที่มีurlPatternตรงกันจะเป็นเส้นทางที่ตอบกลับค่านี้จะแมปกับพารามิเตอร์แรกที่ส่งไปยัง
workbox-routing.registerRouteโดยตรง ขอแนะนำให้ใช้ฟังก์ชันworkbox-core.RouteMatchCallbackเพื่อความยืดหยุ่นสูงสุด
StrategyName
ค่าแจกแจง
"CacheFirst"
"CacheOnly"
"NetworkFirst"
"NetworkOnly"
"StaleWhileRevalidate"
WebpackGenerateSWOptions
ประเภท
WebpackGenerateSWPartial
พร็อพเพอร์ตี้
-
importScriptsViaChunks
string[] ไม่บังคับ
ชื่อของก้อน Webpack อย่างน้อย 1 ชื่อ เนื้อหาของก้อนข้อมูลเหล่านั้นจะรวมอยู่ใน Service Worker ที่สร้างขึ้นผ่านการเรียกใช้
importScripts() -
swDest
สตริง ไม่บังคับ
ค่าเริ่มต้นคือ "service-worker.js"
ชื่อชิ้นงานของไฟล์ Service Worker ที่สร้างโดยปลั๊กอินนี้
WebpackInjectManifestOptions
WebpackInjectManifestPartial
พร็อพเพอร์ตี้
-
compileSrc
บูลีน ไม่บังคับ
ค่าเริ่มต้นคือ true
เมื่อ
true(ค่าเริ่มต้น) ระบบจะคอมไพล์ไฟล์swSrcโดยใช้ webpack เมื่อfalseจะไม่มีการคอมไพล์ (และใช้webpackCompilationPluginsไม่ได้) ตั้งค่าเป็นfalseหากต้องการแทรกไฟล์ Manifest ลงใน เช่น ไฟล์ JSON -
swDest
สตริง ไม่บังคับ
ชื่อชิ้นงานของไฟล์ Service Worker ที่ปลั๊กอินนี้จะสร้าง หากไม่ระบุ ระบบจะตั้งชื่อตามชื่อ
swSrc -
webpackCompilationPlugins
any[] ไม่บังคับ
ปลั๊กอิน
webpackที่ไม่บังคับซึ่งจะใช้เมื่อคอมไพล์ไฟล์อินพุตswSrcใช้ได้เฉพาะในกรณีที่compileSrcเป็นtrue
WebpackPartial
พร็อพเพอร์ตี้
-
แบบเปียก
string[] ไม่บังคับ
ชื่อก้อนอย่างน้อย 1 ชื่อซึ่งควรมีไฟล์เอาต์พุตที่เกี่ยวข้อง ในไฟล์ Manifest ของการแคชล่วงหน้า
-
ยกเว้น
(string | RegExp | function)[] optional
ตัวระบุอย่างน้อย 1 รายการที่ใช้ยกเว้นเนื้อหาจากไฟล์ Manifest ของการแคชล่วงหน้า ซึ่งจะตีความตามกฎเดียวกันกับตัวเลือกมาตรฐานของ
webpackexcludeหากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น[/\.map$/, /^manifest.*\.js$] -
excludeChunks
string[] ไม่บังคับ
ชื่อก้อนอย่างน้อย 1 ชื่อที่ควรยกเว้นไฟล์เอาต์พุตที่เกี่ยวข้อง จากไฟล์ Manifest ของการแคชล่วงหน้า
-
รวม
(string | RegExp | function)[] optional
ตัวระบุอย่างน้อย 1 รายการที่ใช้เพื่อรวมเนื้อหาไว้ในไฟล์ Manifest ของการแคชล่วงหน้า ซึ่งจะตีความตามกฎเดียวกันกับตัวเลือกมาตรฐานของ
webpackinclude -
โหมด
สตริง ไม่บังคับ
หากตั้งค่าเป็น "production" ระบบจะสร้างชุด Service Worker ที่เพิ่มประสิทธิภาพซึ่ง ไม่รวมข้อมูลการแก้ไขข้อบกพร่อง หากไม่ได้กำหนดค่าอย่างชัดเจนที่นี่ ระบบจะใช้ค่า
modeที่กำหนดค่าไว้ในการรวบรวมwebpackปัจจุบัน
เมธอด
copyWorkboxLibraries()
workbox-build.copyWorkboxLibraries(
destDirectory: string,
): Promise<string>
ซึ่งจะคัดลอกชุดไลบรารีรันไทม์ที่ Workbox ใช้ไปยัง ไดเรกทอรีในเครื่อง ซึ่งควรจะติดตั้งใช้งานควบคู่ไปกับไฟล์ Service Worker
คุณอาจใช้ Workbox จาก URL ของ CDN อย่างเป็นทางการแทนการติดตั้งใช้งานสำเนาในเครื่องเหล่านี้
วิธีนี้มีไว้เพื่อประโยชน์ของนักพัฒนาแอปที่ใช้
workbox-build.injectManifest ซึ่ง
ไม่ต้องการใช้สำเนา Workbox ใน CDN นักพัฒนาแอปที่ใช้
workbox-build.generateSW ไม่จำเป็นต้อง
เรียกใช้เมธอดนี้อย่างชัดเจน
พารามิเตอร์
-
destDirectory
สตริง
เส้นทางไปยังไดเรกทอรีหลักที่จะสร้างไดเรกทอรีใหม่ของไลบรารี
การคืนสินค้า
-
Promise<string>
ชื่อของไดเรกทอรีที่สร้างขึ้นใหม่
generateSW()
workbox-build.generateSW(
config: GenerateSWOptions,
): Promise<BuildResult>
วิธีนี้จะสร้างรายการ URL เพื่อแคชล่วงหน้า ซึ่งเรียกว่า "ไฟล์ Manifest ของแคชล่วงหน้า" ตามตัวเลือกที่คุณระบุ
นอกจากนี้ ยังมีตัวเลือกเพิ่มเติมที่กำหนดค่าลักษณะการทำงานของ Service Worker
เช่น runtimeCaching กฎที่ควรใช้
โดยอิงตามไฟล์ Manifest ของการแคชล่วงหน้าและการกำหนดค่าเพิ่มเติม ระบบจะเขียนไฟล์ Service Worker ที่พร้อมใช้งานลงในดิสก์ที่ 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: '...',
});
พารามิเตอร์
-
การกำหนดค่า
การคืนสินค้า
-
Promise<BuildResult>
getManifest()
workbox-build.getManifest(
config: GetManifestOptions,
): Promise<GetManifestResult>
เมธอดนี้จะแสดงรายการ URL ที่จะแคชล่วงหน้า ซึ่งเรียกว่า "ไฟล์ Manifest ของการแคชล่วงหน้า" พร้อมรายละเอียดเกี่ยวกับจำนวนรายการและขนาดของรายการ ตามตัวเลือกที่คุณระบุ
// 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: ...,
});
พารามิเตอร์
-
การกำหนดค่า
การคืนสินค้า
-
Promise<GetManifestResult>
getModuleURL()
workbox-build.getModuleURL(
moduleName: string,
buildType: BuildType,
): string
พารามิเตอร์
-
moduleName
สตริง
-
buildType
BuildType
การคืนสินค้า
-
สตริง
injectManifest()
workbox-build.injectManifest(
config: InjectManifestOptions,
): Promise<BuildResult>
วิธีนี้จะสร้างรายการ URL เพื่อแคชล่วงหน้า ซึ่งเรียกว่า "ไฟล์ Manifest ของแคชล่วงหน้า" ตามตัวเลือกที่คุณระบุ
ระบบจะแทรก Manifest ลงในไฟล์ swSrc และสตริงตัวยึดตำแหน่ง
injectionPoint จะกำหนดตำแหน่งที่ควรวาง Manifest ในไฟล์
ระบบจะเขียนไฟล์ Service Worker สุดท้ายพร้อมกับ Manifest ที่แทรกลงในดิสก์ที่ swDest
วิธีนี้จะไม่คอมไพล์หรือรวมไฟล์ swSrc แต่จะจัดการ
การแทรก Manifest เท่านั้น
// 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: '...',
});
พารามิเตอร์
-
การกำหนดค่า
การคืนสินค้า
-
Promise<BuildResult>