Security News
RubyGems.org Adds New Maintainer Role
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
workbox-precaching
Advanced tools
The workbox-precaching package is part of the Workbox suite of tools, which are designed to make it easier to build progressive web apps (PWAs) and improve offline experiences. It provides a way to precache resources during the service worker installation phase, ensuring that they are available offline and can be served instantly on repeat visits.
Precaching static resources
This feature allows you to specify a list of URLs with an associated revision detail to be precached when the service worker is installed. The revision helps in cache busting when the content of the files changes.
import { precacheAndRoute } from 'workbox-precaching';
precacheAndRoute([
{url: '/index.html', revision: '1234567890'},
{url: '/styles/main.css', revision: '1234567890'},
{url: '/scripts/main.js', revision: '1234567890'}
]);
Integrating with a build process
This feature is used to integrate Workbox with your build process using workbox-build. It allows you to generate a service worker file that will precache the specified resources.
import { injectManifest } from 'workbox-build';
injectManifest({
swSrc: 'src/sw.js',
swDest: 'build/sw.js',
globDirectory: 'build',
globPatterns: ['**\/*.{html,js,css}'],
maximumFileSizeToCacheInBytes: 4 * 1024 * 1024, // 4MB
}).then(({count, size, warnings}) => {
// Optionally, log any warnings and details.
console.log('Generated new service worker with', count, 'precached files, totaling', size, 'bytes.');
});
Updating precached assets
This code shows how you can manually add or update assets in the precache during the service worker's install event. This can be useful for custom handling of updates to precached assets.
self.addEventListener('install', (event) => {
const urls = ['/index.html', '/styles/main.css'];
const cacheName = workbox.core.cacheNames.precache;
event.waitUntil(caches.open(cacheName).then((cache) => cache.addAll(urls)));
});
sw-precache is a similar tool for generating a service worker that precaches resources. It was one of the earlier tools for this purpose but is now deprecated in favor of Workbox, which offers a more modular and flexible approach.
offline-plugin is a webpack plugin designed to provide offline functionality for web applications. It's similar to workbox-precaching but is specifically tied to webpack and doesn't offer the same level of modularity as Workbox.
serviceworker-webpack-plugin integrates with webpack and assists in generating a service worker for precaching. It's more limited in scope compared to Workbox, which provides a comprehensive set of tools for various caching strategies and other service worker features.
This module's documentation can be found at https://developers.google.com/web/tools/workbox/modules/workbox-precaching
FAQs
This module efficiently precaches assets.
We found that workbox-precaching demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.
Security News
Research
Socket's threat research team has detected five malicious npm packages targeting Roblox developers, deploying malware to steal credentials and personal data.