stringify-entities
Encode HTML character references.
- Very fast
- Just the encoding part
- Has either all the options you need for a minifier/prettifier, or a tiny size w/
stringify-entities/light - Reliable:
'`'characters are escaped to ensure no scripts run in Internet Explorer 6 to 8. Additionally, only named references recognized by HTML4 are encoded, meaning the infamous'(which people think is a virus) won’t show up
Algorithm
By default, all dangerous, non-ASCII, and non-printable ASCII characters are encoded. A subset of characters can be given to encode just those characters. Alternatively, pass escapeOnly to escape just the dangerous characters (", ', <, >, &, `). By default, hexadecimal character references are used. Pass useNamedReferences to use named character references when possible, or useShortestReferences to use whichever is shortest: decimal, hexadecimal, or named. There is also a stringify-entities/light module, which works just like stringifyEntities but without the formatting options: it’s much smaller but always outputs hexadecimal character references.
Install
npm:
npm install stringify-entities
Use
var stringify = require('stringify-entities')
stringify('alpha © bravo ≠ charlie 𝌆 delta')
// => 'alpha © bravo ≠ charlie 𝌆 delta'
stringify('alpha © bravo ≠ charlie 𝌆 delta', {useNamedReferences: true})
// => 'alpha © bravo ≠ charlie 𝌆 delta'
API
stringifyEntities(value[, options])
Encode special characters in value.
options
Core options
options.escapeOnly
Whether to only escape possibly dangerous characters (boolean, default: false). Those characters are ", &, ', <, >, and `.
options.subset
Whether to only escape the given subset of characters (Array.<string>). Note that only BMP characters are supported here (so no emoji).
Formatting options
If you do not care about these, use stringify-entities/light, which always outputs hexadecimal character references.
options.useNamedReferences
Prefer named character references (&) where possible (boolean?, default: false).
options.useShortestReferences
Prefer the shortest possible reference, if that results in less bytes (boolean?, default: false). Note: useNamedReferences can be omitted when using useShortestReferences.
options.omitOptionalSemicolons
Whether to omit semicolons when possible (boolean?, default: false). Note: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.
Omitting semicolons is possible for legacy named references in certain cases, and numeric references in some cases.
options.attribute
Only needed when operating dangerously with omitOptionalSemicolons: true. Create character references which don’t fail in attributes (boolean?, default: false).
Related
parse-entities— Parse HTML character referencescharacter-entities— Info on character entitiescharacter-entities-html4— Info on HTML 4 character entitiescharacter-entities-legacy— Info on legacy character entitiescharacter-reference-invalid— Info on invalid numeric character references