A hexo plugin to run workbox-build and provide convenient features of PWA and service worker.
- run workbox-build via passing through your custom options. (generateSW mode or injectManifest mode)
- generate the script which using to register service-worker.
- reference the register script into html.
- copy
manifest.json
from custom path topublic\
. - reference the
manifest.json
via<link>
tag in html.
This plugin doesn't provide PWA support ready out of the box.
You need to know how to use workbox-build, configurate workbox strategy and custom your manifest.json
.
pnpm add hexo-workbox-build
# npm i hexo-workbox-build
hexo_workbox_build:
enable: false
WB_runWorkboxBuild: true
WB_swDest: ""
WB_generateSWOptionsPath: ""
WB_injectManifestOptionsPath: ""
REG_generateRegister: true
REG_registerScriptDest: "registerSW.js"
# REG_registerScriptNjkPath: "" # default to internal nunjucks template
REG_injector: true
REG_injectorNjkString: '<script defer src="{{ REG_registerScriptDest }}"></script>'
MF_copyManifestJsonSrc: ""
MF_copyManifestJsonDest: ""
MF_injector: false
MF_injectorNjkString: '<link rel="manifest" href="{{ MF_cpoyManifestJsonDest }}" />'
hexo_workbox_build:
enable: true
WB_runWorkboxBuild: true
WB_swDest: "sw.js"
WB_generateSWOptionsPath: "workbox/genSWOption.js"
# WB_injectManifestOptionsPath: "workbox/injMfOption.js"
REG_generateRegister: true
# REG_registerScriptDest: 'registerSW.js'
# REG_registerScriptNjkPath: "" # default to internal nunjucks template
REG_injector: true
# REG_injectorNjkString: '<script defer src="{{ REG_registerScriptDest }}"></script>'
MF_copyManifestJsonSrc: "workbox/manifest.json"
MF_copyManifestJsonDest: "manifest.json"
MF_injector: false
# MF_injectorNjkString: '<link rel="manifest" href="{{ MF_cpoyManifestJsonDest }}" />'
option name | value type | default value | note |
---|---|---|---|
enbale |
boolean | false |
Control whether to enable hexo-workbox-build . |
option name | value type | default value | note |
---|---|---|---|
WB_runWorkboxBuild |
boolean | true |
Control whether to run worlbox-build . |
WB_swDest |
string | "" | Specify the name and path of service-worker that worlbox-build generated. (relative to public dir). equal to the swDest option in worlbox-build . |
WB_generateSWOptionsPath |
string | "" | Need WB_swDest setting.Specify the path of a js file. (relative to your hexo dir), which use default exports the arguments of generatesw-mode of worlbox-build . |
WB_injectManifestOptionsPath |
string | "" | Need WB_swDest generatesw-mode setting.Specify the path of a js file. (relative to your hexo dir), which use default exports the arguments of injectmanifest-mode of worlbox-build |
Note:
injectmanifest-mode
depend on a builtsw.js
.It means you need to run
generatesw-mode
first inhexo-workbox-build
.
option name | value type | default value | note |
---|---|---|---|
REG_generateRegister |
boolean | true |
Control whether to generater a javascript, which is use to register service-worker . |
REG_registerScriptDest |
string | registerSW.js |
Need WB_swDest .Specify the path of the above javascript code generated. (relative to public dir) |
REG_registerScriptNjkPath |
string | "" | path of a nunjucks template of the javascript. (relative to your hexo dir) Default template: ./assets/registerScript.njk |
option name | value type | default value | note |
---|---|---|---|
REG_injector |
boolean | true |
Control whether to Inject the above javascript code into html <script> . You can use REG_injectorNjkString to custom it. |
REG_injectorNjkString |
string | <script defer src="{{ REG_registerScriptDest }}"></script> |
Custom the <scripts> string. |
If set both
MF_copyManifestJsonSrc
andMF_copyManifestJsonDest
,hexo-workbox-build
will copy yourmanifest.json
topublic
dir.
In fact, you can simply put your
manifest.json
insource/
dir without using this above feature.
option name | value type | default value | note |
---|---|---|---|
MF_copyManifestJsonSrc |
string | "" | Specify the path of your manifest.json . (relative to your hexo dir) |
MF_copyManifestJsonDest |
string | "" | Specify the destiny path of your manifest.json . (relative to public dir) |
some themes likes next have the same feature, you may not to use this if you enable this feature in themes.
option name | value type | default value | note |
---|---|---|---|
MF_injector |
boolean | false |
need MF_copyManifestJsonDest .control whether to Inject <link> tag into head of html.You can use MF_injectorNjkString option to custom it. |
MF_injectorNjkString |
string | <link rel="manifest" href="{{ MF_cpoyManifestJsonDest }}" /> |
custom the <link> string. |