Rehype plugin to rewrite URLs of href and src attributes.
npm install rehype-urlsGiven 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