mirror of https://github.com/curbengh/hexo-yam
73db847fd4
removed outdated http-compression section |
||
---|---|---|
.github | ||
lib | ||
test | ||
.gitignore | ||
.npmrc | ||
.snyk | ||
LICENSE | ||
README.md | ||
bunfig.toml | ||
index.js | ||
package.json |
README.md
hexo-yam
Yet Another Minifier for Hexo. Minify and compress HTML, JS, CSS, SVG, XML and JSON. Other files are also compressed. Support gzip, brotli and zstd compressions.
Table of contents
Installation
$ npm install hexo-yam --save
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 --include=optional --force
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