Rehype plugin to rewrite URLs of href
and src
attributes.
npm install rehype-urls
Given this markup:
<article>
<img src="http://internal.site/image.jpg">
<a href="http://internal.site/page.html">page</a>
<a href="http://example.com">link</a>
</article>
You can use the following script:
var rehype = require('rehype')
var urls = require('rehype-urls')
rehype()
.use(urls, removeBaseUrl)
.process(input, handleOutput)
function removeBaseUrl (url) {
if (url.host === 'internal.site') {
return url.path
}
}
Which will transform it into:
<article>
<img src="/image.jpg">
<a href="/page.html">page</a>
<a href="http://example.com">link</a>
</article>
You can also pass in an object:
rehype()
.use(urls, { transform: removeBaseUrl })
.process(input, handleOutput)
It's also possible to mutate the URL nodes directly. This example will add target="_blank"
to any external links:
var rehype = require('rehype')
var urls = require('rehype-urls')
rehype()
.use(urls, blankExternal)
.process(input, handleOutput)
function blankExternal (url, node) {
if (url.host !== 'internal.site') {
node.properties.target = '_blank'
}
}
Apache-2.0