htmlfy
HTML formatter yo! Prettify, minify and more!
htmlfy
is a fork of html-formatter. Most of the processing logic has been preserved, and full credit for that goes to the original author. I've made the following major enhancements.
- Fully typed.
- Converted to ESM.
- Added configuration options.
- Refactored the code, including naming changes.
Install
npm install htmlfy
API
Most projects will only need to use prettify
and/or minify
.
Prettify
Turn single-line or ugly HTML into highly formatted HTML. This is a wrapper for all other functions, and then it adds indentation.
import { prettify } from 'htmlfy'
const html = `<main class="hello there world"><div>Welcome to htmlfy! </div></main>`
console.log(prettify(html))
Minify
Turn well-formatted or ugly HTML into a single-line of HTML.
import { minify } from 'htmlfy'
const html =
`<main class="hello there world">
<div>
Welcome to htmlfy!
</div>
</main>`
console.log(minify(html))
Closify
This is done when using prettify, but you can use it in a one-off scenario if needed.
Ensure void elements are "self-closing".
import { closify } from 'htmlfy'
const html = `<br><input type="text">`
console.log(closify(html))
Entify
This is done when using prettify, but you can use it in a one-off scenario if needed.
Enforce entity characters for textarea content. This also performs basic minification on textareas before setting entities. When running this function as a standalone, you'll likely want to pass minify
as true
for full minification of the textarea. The minification does not process any other tags.
import { entify } from 'htmlfy'
const html = `<main class="hello there world"><div>Welcome to htmlfy! </div></main><textarea >
Did you know that 3 > 2?
This is another paragraph.
</textarea><textarea class=" more stuff "> </textarea>`
console.log(entify(html, true))
Default Import
If needed, you can use a default import for htmlfy
.
import * as htmlfy from 'htmlfy'
console.log(htmlfy.prettify('<main><div>Hello World</div></main'))
Common JS Import
Although meant to be an ESM module, you can import using require
.
const { prettify } = require('htmlfy')
Configuration
These configuration options can only be passed to prettify
.
Default config:
{
strict: false,
tab_size: 2
}
Strict
If set to true
, removes comments and ensures void elements are not self-closing.
import { prettify } from 'htmlfy'
const html = `<main><br /><div><!-- Hello World --></div></main>`
console.log(prettify(html, { strict: true }))
Tab Size
Determines the number of spaces, per tab, for indentation.
import { prettify } from 'htmlfy'
const html = `<main class="hello there world"><div>Welcome to htmlfy! </div></main>`
console.log(prettify(html, { tab_size: 4 }))