mirror of https://github.com/curbengh/hexo-yam
docs: add TOC
This commit is contained in:
parent
1c530b7d44
commit
60642c8048
121
README.md
121
README.md
|
@ -8,6 +8,21 @@
|
||||||
|
|
||||||
Yet Another Minifier for Hexo. Minify and compress HTML, JS, CSS and SVG. XML, JSON and [many more](https://github.com/curbengh/hexo-yam/blob/ba77db0094a7c07ea9f70f010bfc15541d4105ca/index.js#L64) are also compressed. Support gzip and [brotli](https://en.wikipedia.org/wiki/Brotli) [compressions](https://en.wikipedia.org/wiki/HTTP_compression).
|
Yet Another Minifier for Hexo. Minify and compress HTML, JS, CSS and SVG. XML, JSON and [many more](https://github.com/curbengh/hexo-yam/blob/ba77db0094a7c07ea9f70f010bfc15541d4105ca/index.js#L64) are also compressed. Support gzip and [brotli](https://en.wikipedia.org/wiki/Brotli) [compressions](https://en.wikipedia.org/wiki/HTTP_compression).
|
||||||
|
|
||||||
|
|
||||||
|
## Table of contents
|
||||||
|
|
||||||
|
- [Version 4](#version-4)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Options](#options)
|
||||||
|
- [HTML](#html)
|
||||||
|
- [CSS](#css)
|
||||||
|
- [JS](#js)
|
||||||
|
- [SVG](#svg)
|
||||||
|
- [Gzip](#gzip)
|
||||||
|
- [Brotli](#brotli)
|
||||||
|
- [Globbing](#globbing)
|
||||||
|
- [HTTP Compression](#http-compression)
|
||||||
|
|
||||||
## Version 4
|
## Version 4
|
||||||
In v4, `logger:` option has been renamed to `verbose:`
|
In v4, `logger:` option has been renamed to `verbose:`
|
||||||
|
|
||||||
|
@ -37,11 +52,23 @@ $ npm install hexo-yam --save
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
enable: true
|
enable: true
|
||||||
|
html:
|
||||||
|
css:
|
||||||
|
js:
|
||||||
|
svg:
|
||||||
|
gzip:
|
||||||
|
brotli:
|
||||||
```
|
```
|
||||||
|
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
|
- **html** - See [HTML](#html) section
|
||||||
|
- **css** - See [CSS](#css) section
|
||||||
|
- **js** - See [JS](#js) section
|
||||||
|
- **svg** - See [SVG](#svg) section
|
||||||
|
- **gzip** - See [Gzip](#gzip) section
|
||||||
|
- **brotli** - See [Brotli](#brotli) section
|
||||||
|
|
||||||
---
|
## HTML
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
|
@ -52,35 +79,12 @@ minify:
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
- **priority** - Plugin's priority. Defaults to `10`. Set lower value to set higher priority and vice versa.
|
- **priority** - Plugin's priority. Defaults to `10`. Set lower value to set higher priority and vice versa.
|
||||||
- **verbose** - Verbose output. Defaults to `false`.
|
- **verbose** - Verbose output. Defaults to `false`.
|
||||||
- **exclude** - Exclude files.
|
- **exclude** - Exclude files. Support [wildcard](http://www.globtester.com/) pattern(s) in a string or array.
|
||||||
- Support one-liner, `exclude: [*.min.html, *.note.html]`.
|
- **globOptions** - See [globbing](#globbing) section.
|
||||||
- Test glob pattern on the web using [Globtester](http://www.globtester.com/).
|
|
||||||
- **globOptions** - [micromatch options](https://github.com/micromatch/micromatch#options) to customise how glob patterns match files.
|
|
||||||
- Defaults to `{ basename: true }`, unless the pattern has a slash.
|
|
||||||
- basename is disabled depending on each pattern.
|
|
||||||
- This means the following options would work,
|
|
||||||
``` yml
|
|
||||||
exclude:
|
|
||||||
- '*foo.html'
|
|
||||||
- '**/bar/*/*.html'
|
|
||||||
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,
|
|
||||||
``` yml
|
|
||||||
include:
|
|
||||||
- '!foo.svg'
|
|
||||||
- '!**/bar/*/*.svg'
|
|
||||||
globOptions:
|
|
||||||
basename: true
|
|
||||||
```
|
|
||||||
- basename would stay disabled, if explicitly disabled in `globOptions:`.
|
|
||||||
|
|
||||||
For more options, see [HTMLMinifier](https://github.com/kangax/html-minifier).
|
For more options, see [HTMLMinifier](https://github.com/kangax/html-minifier).
|
||||||
|
|
||||||
---
|
## CSS
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
|
@ -92,13 +96,13 @@ minify:
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
- **priority** - Plugin's priority. Defaults to `10`.
|
- **priority** - Plugin's priority. Defaults to `10`.
|
||||||
- **verbose** - Verbose output. Defaults to `false`.
|
- **verbose** - Verbose output. Defaults to `false`.
|
||||||
- **exclude** - Exclude files. Support wildcard pattern.
|
- **exclude** - Exclude files. Support [wildcard](http://www.globtester.com/) pattern(s) in a string or array.
|
||||||
- **level** - Optimization level. Defaults to `2`.
|
- **level** - Optimization level. Defaults to `2`.
|
||||||
- **globOptions** - See [`html:`](#options).
|
- **globOptions** - See [globbing](#globbing) section.
|
||||||
|
|
||||||
For more options, see [clean-css](https://github.com/jakubpawlowicz/clean-css).
|
For more options, see [clean-css](https://github.com/jakubpawlowicz/clean-css).
|
||||||
|
|
||||||
---
|
## JS
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
|
@ -110,16 +114,16 @@ minify:
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
- **priority** - Plugin's priority. Defaults to `10`.
|
- **priority** - Plugin's priority. Defaults to `10`.
|
||||||
- **verbose** - Verbose output. Defaults to `false`.
|
- **verbose** - Verbose output. Defaults to `false`.
|
||||||
- **exclude** - Exclude files. Support wildcard pattern.
|
- **exclude** - Exclude files. Support [wildcard](http://www.globtester.com/) pattern(s) in a string or array.
|
||||||
- **compress** - Compress options.
|
- **compress** - Compress options.
|
||||||
- **mangle** - Mangle variable names. Defaults to `true`. Pass an object to specify [mangle options](https://github.com/terser-js/terser#mangle-options).
|
- **mangle** - Mangle variable names. Defaults to `true`. Pass an object to specify [mangle options](https://github.com/terser-js/terser#mangle-options).
|
||||||
- **output** - Output options.
|
- **output** - Output options.
|
||||||
- To retain comments, `output: {comments: true}`.
|
- To retain comments, `output: {comments: true}`.
|
||||||
- **globOptions** - See [`html:`](#options).
|
- **globOptions** - See [globbing](#globbing) section.
|
||||||
|
|
||||||
For more options, see [Terser](https://github.com/terser-js/terser).
|
For more options, see [Terser](https://github.com/terser-js/terser).
|
||||||
|
|
||||||
---
|
## SVG
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
|
@ -132,14 +136,14 @@ minify:
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
- **priority** - Plugin's priority. Defaults to `10`.
|
- **priority** - Plugin's priority. Defaults to `10`.
|
||||||
- **verbose** - Verbose output. Defaults to `false`.
|
- **verbose** - Verbose output. Defaults to `false`.
|
||||||
- **include** - Include files. Support wildcard pattern.
|
- **include** - Include files. Support [wildcard](http://www.globtester.com/) pattern(s) in a string or array.
|
||||||
- Exclude `*.min.svg` by default.
|
- Exclude `*.min.svg` by default.
|
||||||
- **plugins** - Plugin options.
|
- **plugins** - Plugin options.
|
||||||
- To retain comments, `plugins: [{removeComments: false}]`.
|
- Example: to retain comments, `plugins: [{removeComments: false}]`.
|
||||||
- For more options, see [svgo](https://github.com/svg/svgo).
|
- For more options, see [svgo](https://github.com/svg/svgo).
|
||||||
- **globOptions** - See [`html:`](#options).
|
- **globOptions** - See [globbing](#globbing) section.
|
||||||
|
|
||||||
---
|
## Gzip
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
|
@ -161,13 +165,13 @@ minify:
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
- **priority** - Plugin's priority. Defaults to `10`.
|
- **priority** - Plugin's priority. Defaults to `10`.
|
||||||
- **verbose** - Verbose output. Defaults to `false`.
|
- **verbose** - Verbose output. Defaults to `false`.
|
||||||
- **include** - Include files. Support wildcard pattern.
|
- **include** - Include files. Support [wildcard](http://www.globtester.com/) pattern(s) in a string or array.
|
||||||
- Support one-liner, `include: ['*.html','*.css','*.js']`.
|
- Support one-liner, `include: ['*.html','*.css','*.js']`.
|
||||||
- Must include asterisk and single quotes. `.html` is invalid. `'*.html'` is valid.
|
- Must include asterisk and single quotes. `.html` is invalid. `'*.html'` is valid.
|
||||||
- **globOptions** - See [`html:`](#options).
|
- **globOptions** - See [globbing](#globbing) section.
|
||||||
- **level** - Compression level; lower value may results in faster compression but slightly larger (compressed) file. Range `1-9`. Defaults to `9`, or the value of [`zlib.constants.Z_BEST_COMPRESSION`](https://nodejs.org/docs/latest-v12.x/api/zlib.html#zlib_zlib_constants)
|
- **level** - Compression level; lower value may results in faster compression but slightly larger (compressed) file. Range `1-9`. Defaults to `9`, or the value of [`zlib.constants.Z_BEST_COMPRESSION`](https://nodejs.org/docs/latest-v12.x/api/zlib.html#zlib_zlib_constants)
|
||||||
|
|
||||||
---
|
## Brotli
|
||||||
|
|
||||||
``` yaml
|
``` yaml
|
||||||
minify:
|
minify:
|
||||||
|
@ -189,11 +193,44 @@ minify:
|
||||||
- **enable** - Enable the plugin. Defaults to `true`.
|
- **enable** - Enable the plugin. Defaults to `true`.
|
||||||
- **priority** - Plugin's priority. Defaults to `10`.
|
- **priority** - Plugin's priority. Defaults to `10`.
|
||||||
- **verbose** - Verbose output. Defaults to `false`.
|
- **verbose** - Verbose output. Defaults to `false`.
|
||||||
- **include** - Include files. Support wildcard pattern.
|
- **include** - Include files. Support [wildcard](http://www.globtester.com/) pattern(s) in a string or array.
|
||||||
- **globOptions** - See [`html:`](#options).
|
- **globOptions** - See [globbing](#globbing) section.
|
||||||
- **level** - Compression level. Range `1-11`. Defaults to `11`, or the value of [`zlib.constants.BROTLI_MAX_QUALITY`](https://nodejs.org/docs/latest-v12.x/api/zlib.html#zlib_brotli_constants)
|
- **level** - Compression level. Range `1-11`. Defaults to `11`, or the value of [`zlib.constants.BROTLI_MAX_QUALITY`](https://nodejs.org/docs/latest-v12.x/api/zlib.html#zlib_brotli_constants)
|
||||||
|
|
||||||
|
## Globbing
|
||||||
|
|
||||||
|
Use "globOptions" to customise how glob patterns match files. Refer to [micromatch](https://github.com/micromatch/micromatch#options) 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,
|
||||||
|
|
||||||
|
``` yml
|
||||||
|
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,
|
||||||
|
|
||||||
|
``` yml
|
||||||
|
include:
|
||||||
|
- '!foo.svg'
|
||||||
|
- '!**/bar/*/*.svg'
|
||||||
|
globOptions:
|
||||||
|
basename: true
|
||||||
|
```
|
||||||
|
|
||||||
|
- basename will stay disabled, if explicitly disabled in "globOptions".
|
||||||
|
|
||||||
|
|
||||||
## HTTP Compression
|
## HTTP Compression
|
||||||
|
|
||||||
While most modern web browsers [support Brotli](https://www.caniuse.com/#feat=brotli), you also need to consider whether the web/app server, hosting platform, reverse proxy or CDN (whichever relevant to you) support it.
|
While most modern web browsers [support Brotli](https://www.caniuse.com/#feat=brotli), you also need to consider whether the web/app server, hosting platform, reverse proxy or CDN (whichever relevant to you) support it.
|
||||||
|
|
||||||
As of May 2019, GitHub Pages, GitLab Pages and Netlify *do not* support brotli yet. You can generate `.br` files, but they won't serve those files.
|
As of May 2019, GitHub Pages, GitLab Pages and Netlify *do not* support brotli yet. You can generate `.br` files, but they won't serve those files.
|
||||||
|
|
Loading…
Reference in New Issue