mirror of https://github.com/curbengh/hexo-yam
9.4 KiB
9.4 KiB
hexo-yam
Yet Another Minifier for Hexo. Minify HTML, JS, CSS, SVG, XML and JSON. Compress static web assets using gzip, brotli and zstd.
Table of contents
Installation
$ npm install --save hexo-yam
Options
minify:
enable: true
previewServer: true
html:
css:
js:
svg:
gzip:
brotli:
xml:
json:
- enable - Enable the plugin. Defaults to
true
. - previewServer - Disable the plugin when running
hexo server
. Defaults totrue
. - html - See HTML section
- css - See CSS section
- js - See JS section
- svg - See SVG section
- gzip - See Gzip section
- brotli - See Brotli section
- xml - See XML section
- json - See JSON section
HTML
minify:
html:
enable: true
exclude:
- enable - Enable the plugin. Defaults to
true
. - priority - Plugin's priority. Defaults to
10
. Set lower value to set higher priority and vice versa. - verbose - Verbose output. Defaults to
false
. - exclude - Exclude files. Support wildcard pattern(s) in a string or array.
- globOptions - See globbing section.
For more options, see HTMLMinifier.
CSS
minify:
css:
enable: true
exclude:
- "*.min.css"
- enable - Enable the plugin. Defaults to
true
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - exclude - Exclude files. Support wildcard pattern(s) in a string or array.
- level - Optimization level. Defaults to
2
. - globOptions - See globbing section.
For more options, see clean-css.
JS
minify:
js:
enable: true
exclude:
- "*.min.js"
- enable - Enable the plugin. Defaults to
true
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - exclude - Exclude files. Support wildcard pattern(s) in a string or array.
- compress - Compress options.
- mangle - Mangle variable names. Defaults to
true
. Pass an object to specify mangle options. - output - Output options.
- To retain comments,
output: {comments: true}
.
- To retain comments,
- globOptions - See globbing section.
For more options, see Terser.
SVG
minify:
svg:
enable: true
include:
- "*.svg"
- "!*.min.svg"
- enable - Enable the plugin. Defaults to
true
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - include - Include files. Support wildcard pattern(s) in a string or array.
- Exclude
*.min.svg
by default.
- Exclude
- plugins - Plugin options.
- Examples:
plugins: # Retain comments removeComments: false # Do not remove unused ID attributes cleanupIds: false
- For more options, see svgo.
- globOptions - See globbing section.
XML
Remove whitespaces in xml.
minify:
xml:
enable: false
include:
- "*.xml"
- "!*.min.xml"
- enable - Enable the plugin. Defaults to
false
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - include - Include files. Support wildcard pattern(s) in a string or array.
- Exclude
*.min.xml
by default.
- Exclude
- removeComments - Remove comments in xml. Defaults to
true
. - globOptions - See globbing section.
For more options, see minify-xml.
JSON
Remove whitespaces in json.
minify:
json:
enable: false
include:
- "*.json"
- "!*.min.json"
- enable - Enable the plugin. Defaults to
false
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - include - Include files. Support wildcard pattern(s) in a string or array.
- Exclude
*.min.json
by default.
- Exclude
- globOptions - See globbing section.
Gzip
minify:
gzip:
enable: true
include:
- "*.html"
- "*.css"
- "*.js"
- "*.txt"
- "*.ttf"
- "*.atom"
- "*.stl"
- "*.xml"
- "*.svg"
- "*.eot"
- "*.json"
- enable - Enable the plugin. Defaults to
true
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - include - Include files. Support wildcard pattern(s) in a string or array.
- Support one-liner,
include: ['*.html','*.css','*.js']
. - Must include asterisk and single quotes.
.html
is invalid.'*.html'
is valid.
- Support one-liner,
- globOptions - See globbing section.
- level - Compression level; lower value may results in faster compression but slightly larger (compressed) file. Range
1-9
. Defaults to9
, or the value ofzlib.constants.Z_BEST_COMPRESSION
Brotli
minify:
brotli:
enable: true
include:
- "*.html"
- "*.css"
- "*.js"
- "*.txt"
- "*.ttf"
- "*.atom"
- "*.stl"
- "*.xml"
- "*.svg"
- "*.eot"
- "*.json"
- enable - Enable the plugin. Defaults to
true
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - include - Include files. Support wildcard pattern(s) in a string or array.
- globOptions - See globbing section.
- level - Compression level. Range
1-11
. Defaults to11
, or the value ofzlib.constants.BROTLI_MAX_QUALITY
Zstd
minify:
zstd:
enable: false
include:
- "*.html"
- "*.css"
- "*.js"
- "*.txt"
- "*.ttf"
- "*.atom"
- "*.stl"
- "*.xml"
- "*.svg"
- "*.eot"
- "*.json"
- enable - Enable the plugin. Defaults to
false
. - priority - Plugin's priority. Defaults to
10
. - verbose - Verbose output. Defaults to
false
. - include - Include files. Support wildcard pattern(s) in a string or array.
- globOptions - See globbing section.
- level - Compression level. Range
1-22
. Defaults to3
, or the value ofDEFAULT_LEVEL
Cannot find module '@mongodb-js/zstd-linux-x64-gnu'
npm install --save @mongodb-js/zstd-linux-x64-gnu
- @mongodb-js/zstd-darwin-arm64 (Apple Silicon)
- @mongodb-js/zstd-darwin-x64 (Intel Mac)
- @mongodb-js/zstd-linux-arm64-gnu
- @mongodb-js/zstd-linux-arm64-musl (Alpine)
- @mongodb-js/zstd-linux-x64-gnu
- @mongodb-js/zstd-linux-x64-musl (Alpine)
- @mongodb-js/zstd-win32-x64-msvc
Globbing
Use "globOptions" to customise how glob patterns match files. Refer to micromatch for available options.
- basename is enabled by default, unless the pattern has a slash.
- basename is disabled depending on each pattern.
- This means the following options would work,
exclude:
- "*foo.html" # basename is enabled
- "**/bar/*/*.html" # basename is automatically disabled
- "*baz.css" # basename is enabled
globOptions:
basename: true # default
- This behaviour doesn't apply to pattern that starts with
!
(negation). - This limitation only applies to
include:
option used in svg, gzip and brotli. - This means the following options would not work,
include:
- "!foo.svg"
- "!**/bar/*/*.svg"
globOptions:
basename: true
- basename will stay disabled, if explicitly disabled in "globOptions".
Credits
All credits go to the following work:
- hexo-neat by rozbo
- gzip feature is inspired by hexo-generator-optimize