remark-images-download

3.0.4 • Public • Published

remark-images-download Build Status Coverage Status

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, default false

      The status code is different than 200.

    • mimeType: boolean, default false

      The MIME type does not match an image.

    • fileTooBig: boolean, default false

      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 to downloadDestination after applying this function to the path to obtain the local location of example.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 by to 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.

License

MIT © Zeste de Savoir

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 3.0.4
    2
    • latest

Version History

Package Sidebar

Install

npm i remark-images-download

Weekly Downloads

17

Version

3.0.4

License

MIT

Unpacked Size

48.4 kB

Total Files

5

Last publish

Collaborators

  • situphen
  • talone