Skip to content

A grunt plugin of converting image tag in markdown file to picture element.

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

miller/grunt-responsive-images-converter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grunt-responsive-images-converter

Convert image tag in markdown file to picture element as to support resoponsive image. It is best to use with grunt-responsive-images , which could build responsive images from one image.

Getting Started

This plugin requires Grunt ~0.4.4

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-responsive-images-converter --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-responsive-images-converter');

The "responsive_images_converter" task

Overview

In your project's Gruntfile, add a section named responsive_images_converter to the data object passed into grunt.initConfig().

grunt.initConfig({
  responsive_images_converter: {
    default_options: {
      files: {
        'tmp/default_options': [ 'test/fixtures/only-one-image.md' ],
      },
    }
  },
})

Options

options.asset

Type: String Default value: ''

The directory of your responsive images, it will be the same with the original img tag in markdown file if ignored.

options.queries

Type: Array Default value: see below

The breakpoints configuration of your responsive policy, with following properties:

  • name: One part of the responsive images' name.
  • media: Value of the media attribute with source tag in picture element.
  • dprs: Device pixel ratios that will support.
  • suffix: Anoher part of the responsive images' name.

The default value of options.queries:

var DEFAULT_OPTIONS = {
    queries: [{
      name: 'phone',
      media: '(max-width:500px)',
      //device pixel ratio( 1 is default )
      dprs: [ 2 ],
      suffix: '@'
    },{
      name: 'tablet',
      media: '(max-width:800px)',
      //device pixel ratio( 1 is default )
      dprs: [ 2 ],
      suffix: '@'
    },{
      name: 'desktop',
      media: '(min-width:800px)',
      //device pixel ratio( 1 is default )
      dprs: [ 2 ],
      suffix: '@'
    }]
  };

Usage Examples

Default Options

test/fixtures/only-one-image.md

![Webp compare tool](/img/raw/webp-tool.png)

Gruntfile.js

grunt.initConfig({
  responsive_images_converter: {
    default_options: {
      files: {
        'tmp/default_options': [ 'test/fixtures/only-one-image.md' ],
      },
    }
  },
})

After running the task above, it will creat a new file named default_options under tmp directory.

tmp/default_options

<picture>
    <source srcset="/img/raw/webp-tool-phone.png, /img/raw/webp-tool-phone@2x.png 2x" media="(max-width:500px)">
    <source srcset="/img/raw/webp-tool-tablet.png, /img/raw/webp-tool-tablet@2x.png 2x" media="(max-width:800px)">
    <source srcset="/img/raw/webp-tool-desktop.png, /img/raw/webp-tool-desktop@2x.png 2x" media="(min-width:800px)">
    <img alt="Webp compare tool">
</picture>

Asset Option

When your responsive images locat in the different directory from the orignal img tag. For the example above, the directory of you img tag in markdown file is /img/raw/, if your responsive images' directory is img/resp/, then you should use the asset field.

grunt.initConfig({
  responsive_images_converter: {
    options: {
      asset: '/img/resp/'
    },
    files: {
      'tmp/change_srcset_dir': [ 'test/fixtures/only-one-image.md' ],
    },
  },
})

And the result will be:

<picture>
    <source srcset="/img/resp/webp-tool-phone.png, /img/resp/webp-tool-phone@2x.png 2x" media="(max-width:500px)">
    <source srcset="/img/resp/webp-tool-tablet.png, /img/resp/webp-tool-tablet@2x.png 2x" media="(max-width:800px)">
    <source srcset="/img/resp/webp-tool-desktop.png, /img/resp/webp-tool-desktop@2x.png 2x" media="(min-width:800px)">
    <img alt="Webp compare tool">
</picture>

Src Option

When you don't want to create a new file and just need to replace the original markdown file, then use the src field.

grunt.initConfig({
  responsive_images_converter: {
    src: [ 'tmp/dest_equal_src.md' ],
  },
})

The result after running task will be written to tmp/dest_equal_src.md.

Notice

At present, browsers don't support the responsive image tech well, you may need use the picturefill to polyfill.

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

(Nothing yet)

About

A grunt plugin of converting image tag in markdown file to picture element.

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published