|  | ||
|---|---|---|
| lib | ||
| .gitignore | ||
| .npmignore | ||
| .npmrc | ||
| .snyk | ||
| .travis.yml | ||
| README.md | ||
| index.js | ||
| package.json | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	Hexo-yam
This project is based on hexo-neat
Yet Another Minifier for Hexo. Minify and compress html, js and css. xml and json are compressed only. Support gzip and brotli compressions.
The original package has not been updated for a while. I update the dependencies and add compression support.
All the options are the same, so you can use this as a drop-in replacement.
Note: See HTTP Compression section below for more info on using brotli.
Installation
$ npm install hexo-yam --save
Usage
To enable this plugin, insert the following to _config.yml:
neat_enable: true
For further customization, see below.
Options
neat_html:
  enable: true
  exclude:
- enable - Enable the plugin. Defaults to true.
- logger - Verbose output. Defaults to false.
- exclude - Exclude files
For more options, see HTMLMinifier.
neat_css:
  enable: true
  exclude:
    - '*.min.css'
- enable - Enable the plugin. Defaults to true.
- logger - Verbose output. Defaults to false.
- exclude - Exclude files
neat_js:
  enable: true
  exclude:
    - '*.min.js'
- enable - Enable the plugin. Defaults to true.
- mangle - Mangle file names. Defaults to true.
- logger - Verbose output. Defaults to false.
- output - Output options
- compress - Compress options
- exclude - Exclude files
For more options, see UglifyJS.
neat_gzip:
  enable: true
- enable - Enable the plugin. Defaults to true.
- logger - Verbose output. Defaults to false.
neat_brotli:
  enable: true
- enable - Enable the plugin. Defaults to true.
- logger - Verbose output. Defaults to false.
HTTP Compression
While most modern web browsers support 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 2018, GitHub/GitLab Pages and Netlify do not support brotli. You can generate .br files, but they won't be serving those files.
If you have access to the web server config, you should disable on-the-fly compression for static files (that are already compressed by this plugin), e.g.
- nginx: Make sure both filter and static modules are enabled. This way pre-compressed .brfiles will be served while dynamic content can be compressed on-the-fly. Protip:brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;to prevent compressing media files (which are already compressed anyway).
- Apache: See 'Serving pre-compressed content' section of mod_brotli.
- Caddy: 0.9.4+ by default support pre-compressed .gz.brfiles and on-the-fly gzip compress dynamic files.
- express/connect: Use pre-compressed-assets. You still can continue to use compression/shrink-ray-current for dynamic files.
Credits
All credits go to the following work:
- hexo-neat by rozbo
- neat html by HTMLMinifier
- neat css by clean-css
- neat js by terser
- gzip feature is inspired by hexo-generator-optimize