npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

hexo-workbox

v0.0.2

Published

Manage your service worker though the workbox library

Downloads

11

Readme

hexo-workbox Build Status GitHub version Dependency Status

A plugin for your Hexo blog, giving your app offline caching as a progressive enhancement using service workers. hexo-workbox will add a service worker to your blog registering it on initial page load.

This plugin simplify service worker registration and caching, powered by workbox-build. Workbox library automate precaching of static resources (HTML, JavaScript, CSS, and images) and handle runtime caching and fallback strategies. It allows to implement a performant strategy in which a static content is always served directly from the cache, and dynamic or remote resources are served from the network, with fallbacks to cached or static responses when needed.

IMPORTANT!

The glob pattern matching will be performed against the local file system, and the directory that globDirectory is set to must exist at the time the plugin runs. This might run afoul of hexo-server configurations, where an in-memory file system is used.

That means the precached files will only be registered after hexo generate command ends.

For more details on Workbox check out:

Installation

npm i --save hexo-workbox

Configuration

First, enable the plugin in your configuration file (_config.yml):

hexoWorkbox:
  enable: true

Then, start defining your cache strategies using the same configuration as workbox. For example, to caching only the index.html and all the jpg images use something like this:

workbox:
  swDest: 'sw.js'
  globPatterns:
    - '**/*.html'
  globIgnores:
    - '!index.html'
  runtimeCaching:
    - urlPattern: '**/*.jpg'
      handler: 'staleWhileRevalidate'
      options:
        cacheName: 'images'
  skipWaiting: true
  clientsClaim: true

An one more step... To register the service worker don't forget to add this snippet into yout layout:

<script>
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('<%=path %>').then(function() {
    console.log('ServiceWorker has been registered!');
  }).catch(console.error);
}
</script>

Next releases will contain a way to omit this step.

Contributing

Do not forget to follow the eslint rules and make test for the new functionalities/fixes.

License

hexo-workbox is released under the MIT License.