rehype-format
Format HTML with rehype.
Installation
npm:
npm install rehype-format
Usage
Say we have the following file, index.html
:
<!doCTYPE HTML><html>
<head>
<title>Hello!</title>
<meta charset=utf8>
</head>
<body><section> <p>hi there</p>
</section>
</body>
</html>
And our script, example.js
, looks as follows:
var vfile = require('to-vfile');
var report = require('vfile-reporter');
var rehype = require('rehype');
var format = require('rehype-format');
rehype().use(format).process(vfile.readSync('index.html'), function (err, file) {
console.error(report(err || file));
console.log(String(file));
});
Now, running node example
yields:
index.html: no issues found
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<meta charset="utf8">
</head>
<body>
<section>
<p>hi there</p>
</section>
</body>
</html>
API
rehype().use(format[, options])
Format white-space in the processed tree.
- Collapse all white-space (to a single space or newline);
- Remove unneeded white-space;
- Inject needed newlines and indentation;
- Indent previously collapsed newlines properly.
All superfluous white-space is removed. However, as newlines
are kept (and later properly indented), your code will still
line-wrap as expected.
options
indent
(number
, string
, default: 2
)
— Indentation per level. When number, uses that amount
of spaces. When string
, uses that per indentation
level.indentInitial
(boolean
, default: true
)
— Whether to indent the first level (usually, in the
html
element, thus not indenting head
and body
).blanks
(Array.<string>
, default: []
)
— List of tag-names, which, when next to each other,
are joined by a blank line (\n\n
). For example,
when ['head', 'body']
is given, a blank line is added
between these two.
License
MIT © Titus Wormer