remark-images-download
v3.0.5
Published
This plugin downloads images to a custom directory, replacing images URLs with the path to the downloaded file.
Readme
remark-images-download

This plugin downloads images to a custom directory, replacing images URLs with the path to the downloaded file.
Installation
npm:
npm install remark-images-downloadUsage
Dependencies:
const unified = require('unified')
const remarkParse = require('remark-parse')
const stringify = require('rehype-stringify')
const remark2rehype = require('remark-rehype')
const remarkImagesDownload = require('remark-images-download')Usage:
unified()
.use(remarkParse)
.use(remarkIframe,
.use(remarkImagesDownload, {
disabled: true,
downloadDestination: './img/',
defaultImagePath: 'black.png',
defaultOn: {
statusCode: true,
mimeType: false,
fileTooBig: false,
},
maxlength: 1000000,
dirSizeLimit: 10000000,
localUrlToLocalPath: (localUrl) => localPath
})
.use(remark2rehype)
.use(stringify)Configuration options:
All options are optional.
disabled: bool, default:falseIf
true, disables the plugin.downloadDestination: string, default:/tmpParent destination folder for downloads.
defaultImagePath: string or boolean, default:falseImage path to fallback to for images that couldn't be found. Set to
falseor keep default value to disable.defaultOn: object, with properties,Cases when the default image should be used.
statusCode: boolean, defaultfalseThe status code is different than 200.
mimeType: boolean, defaultfalseThe MIME type does not match an image.
fileTooBig: boolean, defaultfalseThe file size exceed the
maxFileSizelimit.
maxFileLength: number, default:1000000Any file with a bigger size than this number (in bytes) will be skipped.
dirSizeLimit: number, default:10000000Download directory size limit (in bytes). When reached, subsequent images are skipped.
localUrlToLocalPath:(localUrl: string): string => localPathor[from: string, to: string], default:<none>(skip local images)If provided, local images referenced in Markdown source (such as
) will be copied todownloadDestinationafter applying this function to the path to obtain the local location ofexample.png, e.g.localUrlToLocalPath('/img/example.png') === '/opt/assets/example.png'. It will get renamed to a shortId just like any downloaded image.In case a two-element array is provided, the string
fromwill get replaced bytousing the following RegExp:'/img/example.png'.replace(new RegExp(`^${from}`), to)If not provided, local images will not end up in
downloadDestination.
Example
Two small images:


And an image of 1Tb!
with the previous configuration remark-images-download will download the two first images in img/UUID/otherUUID.png and img/UUID/yetAnotherUUID.png where UUID is a random string and it does not download example_1Tb.png because the file is too large.
vfile.data.imageDir will be set to the path to the folder where images were downloaded.
