rehype-extended-links
v1.0.2
Published
Extended link handling for rehype
Downloads
16
Maintainers
Readme
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-links
Use
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 windowpreContent
The same ascontent
, but it will be inserted at the beginning of the link.properties
(CreateProperties
orProperties
, optional) — properties to add to the link itselfprotocols
(Array<string>
, default:['http', 'https']
) — protocols to see as external, such asmailto
ortel
rel
(Array<string>
,CreateRel
, orstring
, default:['nofollow']
) — [link types][mdn-rel] to hint about the referenced documents; pass an empty array ([]
) to not setrel
s on links; when using atarget
, addnoopener
andnoreferrer
to avoid exploitation of thewindow.opener
APItarget
(CreateTarget
orTarget
, optional) — how to display referenced documents; the default (nothing) is to not settarget
s on linkstest
(Test
, optional) — extra test to define which external link elements are modified; any test that can be given tohast-util-is-element
is 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.