1.0.0 • Published 6 years ago

service-worker-precache-generator v1.0.0

Weekly downloads
1
License
ISC
Repository
-
Last release
6 years ago

作用

一个webpack插件用来自动生成service worker脚本,该脚本可以预缓存webpack打包出来的静态文件publicDir目录下的静态文件,并且支持cdn

参考

sw-precache-custom是基于sw-precache v5.2.1 sw-precache-webpack-plugin-custom基于sw-precache-webpack-plugin v0.11.5

原组件缺陷

不能处理非webpack输出的静态文件

只能获取webpack打包出来的asset,不能处理publicDir目录下的静态文件,比如:favicon.icon,manifet文件。

不支持cdn

在同一目录下只能对应一个publicPath,因此不支持CDN。比如我PUBLIC__PATH设置成http://cdn.example.com,打包出来下面文件,那么转换如下,这样index.html就访问不到了。

index.html          ->http://cdn.example.com/index.html
bundle.12345678.js  ->http://cdn.example.com/bundle.12345678.js

我的源代码修改

针对sw-precache-webpack-plugin-custom

  1. option传入publicDir参数作为静态目录文件
  2. 读取静态目录文件,并把这些文件和打包出来的文件合并传入sw-precache
  3. 生成一个静态目录文件的映射对象,映射的public_path是'/',因为这些类似于index.html,favicon.icon不走cdn。

代码主要修改在于增加了hackConfig函数和调用。

针对sw-precache

  1. 额外增加选项staticFileGlobsMap,当处理传入的静态文件时候,如果有映射的,就走映射,不进行文件名到public_path的替换,为了支持cdn。