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.
Downloads
118
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-download
Usage
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:false
If
true
, disables the plugin.downloadDestination
: string, default:/tmp
Parent destination folder for downloads.
defaultImagePath
: string or boolean, default:false
Image path to fallback to for images that couldn't be found. Set to
false
or keep default value to disable.defaultOn
: object, with properties,Cases when the default image should be used.
statusCode
: boolean, defaultfalse
The status code is different than 200.
mimeType
: boolean, defaultfalse
The MIME type does not match an image.
fileTooBig
: boolean, defaultfalse
The file size exceed the
maxFileSize
limit.
maxFileLength
: number, default:1000000
Any file with a bigger size than this number (in bytes) will be skipped.
dirSizeLimit
: number, default:10000000
Download directory size limit (in bytes). When reached, subsequent images are skipped.
localUrlToLocalPath
:(localUrl: string): string => localPath
or[from: string, to: string]
, default:<none>
(skip local images)If provided, local images referenced in Markdown source (such as
![](/img/example.png)
) will be copied todownloadDestination
after 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
from
will get replaced byto
using 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:
![](https://example.com/example.png)
![](https://example.com/example2.png)
And an image of 1Tb!
![](https://example.com/example_1Tb.png)
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.