rehype-extended-links v1.0.2
rehype-extended-links
rehype plugin, extends feathers for rehypejs/rehype-external-links.
What is this?
Inherits most of the features from rehypejs/rehype-external-links, extending support for adding <span> to both sides of the <a> label.
Install
npm install rehype-extended-links
yarn add rehype-extended-links
pnpm add rehype-extended-linksUse
import rehypeExtendedLinks from "rehype-extended-links";
import { rehype } from "rehype";
const file = await rehype()
.use(rehypeExtendedLinks, { rel: ["nofollow"] })
.use(rehypeStringify)
.process('<a href="https://example.com">Example</a>');
console.log(String(file));API
This package exports no identifiers.
The default export is rehypeExtendedLinks.
unified().use(rehypeExternalLinks[, options])
Automatically add rel (and target?) to external links.
Parameters
options(Options, optional) — configuration
Returns
Transform (Transformer).
Notes
You should likely not configure target.
You should at least set rel to ['nofollow'].
When using a target, add noopener and noreferrer to avoid exploitation
of the window.opener API.
When using a target, you should set content to adhere to accessibility
guidelines by giving users advanced warning when opening a new window.
CreateContent
Create a target for the element (TypeScript type).
Parameters
element(Element) — element to check
Returns
Content to add (Array<Node> or Node, optional).
CreateProperties
Create properties for an element (TypeScript type).
Parameters
element(Element) — element to check
Returns
Properties to add (Properties, optional).
CreateRel
Create a rel for the element (TypeScript type).
Parameters
element(Element) — element to check
Returns
rel to use (Array<string>, optional).
CreateTarget
Create a target for the element (TypeScript type).
Parameters
element(Element) — element to check
Returns
target to use (Target, optional).
Content
Content to add to the link (TypeScript type). A wrapper for Element.
type Content =
| ElementContent[]
| CreateContent
| ElementContent
| null
| undefined;Options
Fields
content(Array<Node>,CreateContent, orNode, optional) — content to insert at the end of external links; will be inserted in a<span>element; useful for improving accessibility by giving users advanced warning when opening a new windowpreContentThe same ascontent, but it will be inserted at the beginning of the link.properties(CreatePropertiesorProperties, optional) — properties to add to the link itselfprotocols(Array<string>, default:['http', 'https']) — protocols to see as external, such asmailtoortelrel(Array<string>,CreateRel, orstring, default:['nofollow']) — link types to hint about the referenced documents; pass an empty array ([]) to not setrels on links; when using atarget, addnoopenerandnoreferrerto avoid exploitation of thewindow.openerAPItarget(CreateTargetorTarget, optional) — how to display referenced documents; the default (nothing) is to not settargets on linkstest(Test, optional) — extra test to define which external link elements are modified; any test that can be given tohast-util-is-elementis supported
Target
Target (TypeScript type).
Type
type Target = "_blank" | "_parent" | "_self" | "_top";Note
If content or preContent is set, the <a> label will be wrapped in a span.
Examples
See in test.