{"id":18666348,"url":"https://github.com/docpad/docpad-plugin-thumbnails","last_synced_at":"2025-04-11T23:32:44.468Z","repository":{"id":7371049,"uuid":"8697205","full_name":"docpad/docpad-plugin-thumbnails","owner":"docpad","description":"DocPad plugin that manages thumbnail generation of your image files","archived":false,"fork":false,"pushed_at":"2024-01-28T22:28:28.000Z","size":645,"stargazers_count":18,"open_issues_count":12,"forks_count":6,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-04-07T00:54:32.131Z","etag":null,"topics":["docpad-plugin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/docpad.png","metadata":{"files":{"readme":"README.md","changelog":"History.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["balupton"],"patreon":"bevry","open_collective":"bevry","ko_fi":"balupton","liberapay":"bevry","custom":["https://bevry.me/fund"]}},"created_at":"2013-03-11T05:34:03.000Z","updated_at":"2024-02-21T15:55:55.000Z","dependencies_parsed_at":"2024-11-07T08:34:44.030Z","dependency_job_id":"de821093-3174-4fcb-92bf-6cb145eaef6c","html_url":"https://github.com/docpad/docpad-plugin-thumbnails","commit_stats":{"total_commits":29,"total_committers":5,"mean_commits":5.8,"dds":0.3448275862068966,"last_synced_commit":"13f93e2006e3eb1463b729beb197477bd6310000"},"previous_names":["rantecki/docpad-plugin-thumbnails"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docpad%2Fdocpad-plugin-thumbnails","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docpad%2Fdocpad-plugin-thumbnails/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docpad%2Fdocpad-plugin-thumbnails/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docpad%2Fdocpad-plugin-thumbnails/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/docpad","download_url":"https://codeload.github.com/docpad/docpad-plugin-thumbnails/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248495504,"owners_count":21113644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docpad-plugin"],"created_at":"2024-11-07T08:31:57.388Z","updated_at":"2025-04-11T23:32:39.459Z","avatar_url":"https://github.com/docpad.png","language":"JavaScript","funding_links":["https://github.com/sponsors/balupton","https://patreon.com/bevry","https://opencollective.com/bevry","https://ko-fi.com/balupton","https://liberapay.com/bevry","https://bevry.me/fund","https://buymeacoffee.com/balupton"],"categories":[],"sub_categories":[],"readme":"\u003c!-- TITLE/ --\u003e\n\n\u003ch1\u003edocpad-plugin-thumbnails\u003c/h1\u003e\n\n\u003c!-- /TITLE --\u003e\n\n\n\u003c!-- BADGES/ --\u003e\n\n\u003cspan class=\"badge-travisci\"\u003e\u003ca href=\"http://travis-ci.org/docpad/docpad-plugin-thumbnails\" title=\"Check this project's build status on TravisCI\"\u003e\u003cimg src=\"https://img.shields.io/travis/docpad/docpad-plugin-thumbnails/master.svg\" alt=\"Travis CI Build Status\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-npmversion\"\u003e\u003ca href=\"https://npmjs.org/package/docpad-plugin-thumbnails\" title=\"View this project on NPM\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/docpad-plugin-thumbnails.svg\" alt=\"NPM version\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-npmdownloads\"\u003e\u003ca href=\"https://npmjs.org/package/docpad-plugin-thumbnails\" title=\"View this project on NPM\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/docpad-plugin-thumbnails.svg\" alt=\"NPM downloads\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-daviddm\"\u003e\u003ca href=\"https://david-dm.org/docpad/docpad-plugin-thumbnails\" title=\"View the status of this project's dependencies on DavidDM\"\u003e\u003cimg src=\"https://img.shields.io/david/docpad/docpad-plugin-thumbnails.svg\" alt=\"Dependency Status\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-daviddmdev\"\u003e\u003ca href=\"https://david-dm.org/docpad/docpad-plugin-thumbnails#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"\u003e\u003cimg src=\"https://img.shields.io/david/dev/docpad/docpad-plugin-thumbnails.svg\" alt=\"Dev Dependency Status\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cbr class=\"badge-separator\" /\u003e\n\u003cspan class=\"badge-githubsponsors\"\u003e\u003ca href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"\u003e\u003cimg src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-patreon\"\u003e\u003ca href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"\u003e\u003cimg src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-flattr\"\u003e\u003ca href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"\u003e\u003cimg src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-liberapay\"\u003e\u003ca href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"\u003e\u003cimg src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-buymeacoffee\"\u003e\u003ca href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"\u003e\u003cimg src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-opencollective\"\u003e\u003ca href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"\u003e\u003cimg src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-crypto\"\u003e\u003ca href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"\u003e\u003cimg src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-paypal\"\u003e\u003ca href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"\u003e\u003cimg src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-wishlist\"\u003e\u003ca href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"\u003e\u003cimg src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\n\u003c!-- /BADGES --\u003e\n\n\n\u003c!-- DESCRIPTION/ --\u003e\n\nDocPad plugin to generate thumbnails from your associated image files\n\n\u003c!-- /DESCRIPTION --\u003e\n\n\n\n\n\nInstall either [GraphicsMagick](http://www.graphicsmagick.org/) or [ImageMagick](http://www.imagemagick.org/), and then:\n\n### ImageMagick\n\nTo specify the use of ImageMagick, rather than GraphicsMagick, you need to add the following configuration setting in your docpad configuration:\n\n```\nplugins:\n\tthumbnails:\n\t\timageMagick: true\n```\n\n## Usage\n\n### Basic Usage\n\nUse the `@getThumbnail(path, [options...])` function in your templates.\n\n`path` is the path of your image file, relative to the `files` directory.\n\n`options...` are optional parameters, discussed below.\n\nThe `@getThumbnail()` call will return the url to the thumbnail image.\n\n### Basic Example\n\nWe could create the document `mydocument.html.eco` containing the following:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", { w: 100, h: 100 }) %\u003e\"  alt=\"my image\"\u003e\n```\n\nWhere `image1.jpg` is in the `src/files/images/` directory.\n\nThis will run the default resize operation which will fit the image into the given maximum boundaries, in this case 100x100 pixels.\n\nOn site generation, the file `out/images/image1.thumb_default_w100h100q85.jpg` will be created. It will also be updated whenever the source image `src/files/images/image1.jpg` changes.\n\n### AssociatedFiles Example\n\nThe Thumbnails plugin works well with the [AssociatedFiles](http://docpad.org/plugin/associatedfiles) plugin. The example below (this time in _coffeekup_) will display 100x100 thumbnails of all images associated with the document using the AssociatedFiles plugin, with a link to the full-size image:\n\n```\nimage_exts = ['jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG']\nimages = @getDocument().getAssociatedFiles().findAll({extension: $in: image_exts}).toJSON()\nfor image in images\n\ta href: image.url, -\u003e img src: @getThumbnail(image.url, w: 100, h: 100), alt: image.name\n```\n\n## Configuration\n\n### Options\n\nThe optional arguments to `@getThumbnail` can be one or more of the following:\n\n-   an object containing parameters to pass to the target.\n-   a string to specify a preset\n-   a string to specify a target\n\n### Image Parameters\n\nThere are 3 different image parameters you can specify:\n\n-   _w_ for the width of the image\n-   _h_ for the height of the image\n-   _q_ for the JPEG quality setting\n\nParameters can be set using the object form shown in the examples above, or via presets, discussed below.\n\n### Presets\n\nPresets are basically aliases for a set of image parameters that you can define in your docpad configuration. Using presets can be more convenient than specifying parameters for each image individually, and helps your site stay consistent. For example, in your `docpad.coffee` file you might define the following:\n\n```\nplugins:\n\tthumbnails:\n\t\tpresets:\n\t\t\t'default':\n\t\t\t\tw: 200\n\t\t\t\th: 200\n\t\t\t\tq: 90\n\t\t\t'small':\n\t\t\t\tw: 100\n\t\t\t\th: 100\n\t\t\t'medium':\n\t\t\t\tw: 300\n\t\t\t\th: 300\n\t\t\t'large':\n\t\t\t\tw: 500\n\t\t\t\th: 500\n```\n\nIf no parameters (or preset names) are passed to the `@getThumbnail()` function, then the `default` parameters will be used. Given the above configuration, the example below will resize the image to 200x200 at 90% quality.\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\") %\u003e\"  alt=\"my image\"\u003e\n```\n\nYou can pass multiple parameters to the `@getThumbnails()` call, and they will be applied from left to right. For example, you could use the default height and quality parameters and just override the width as follows:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", { w: 250 }) %\u003e\"  alt=\"my image\"\u003e\n```\n\nYou can also mix presets with inline parameters, such as:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", { q: 80 }, 'medium', { h: 50 }) %\u003e\"  alt=\"my image\"\u003e\n```\n\nThe right-most parameters will take precedence over those specified earlier. So the above example uses `w: 300`, `h: 50`, and `q: 80`.\n\nThere are a whole bunch of default presets defined in the plugin, but you will probably want to define your own instead.\n\n### Targets\n\nA thumbnail _target_ defines the set of operations to be performed by the plugin. If no target is specified then the _default_ target is executed, which specifies a basic resize operation. Given that, the following example:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", { w: 100, h: 100 }) %\u003e\"  alt=\"my image\"\u003e\n```\n\nIs equivalent to:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", \"default\", { w: 100, h: 100 }) %\u003e\"  alt=\"my image\"\u003e\n```\n\nThe plugin includes another target, _zoomcrop_, which center-crops the image to the exact width and height supplied, rather than just fitting the image into those boundaries. To specify the zoomcrop target, just change the example to:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", \"zoomcrop\", { w: 100, h: 100 }) %\u003e\"  alt=\"my image\"\u003e\n```\n\n### Creating your own targets\n\nYou can overide the _default_ or _zoomcrop_ targets if you wish, or specify completely new ones via the plugin configuration. For example, lets define a couple more to play with:\n\n```\nplugins:\n\tthumbnails:\n\t\ttargets:\n\t\t\t'sepia': (img, args) -\u003e\n\t\t\t\treturn img.sepia()\n\t\t\t'rotateleft': (img, args) -\u003e\n\t\t\t\treturn img.rotate('black', -90)\n```\n\n_img_ is a reference to a gm image object. The target function must also return a gm image object.\n\nThe _args_ argument is just an object containing the w, h, q parameters passed to `@getThumbnail()`\n\nYou can use any GraphicsMagick/ImageMagick operation supported by the gm module. You can find the details of those in the [gm docs](http://aheckmann.github.com/gm/docs.html).\n\nTo run one of our new targets, we can do the following:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", 'medium', 'sepia' %\u003e\"  alt=\"my image\"\u003e\n```\n\nNote that targets and presets can be passed to `@getThumbnail` in any order, and intermixed as you like. The only caveat is that a target and preset cannot have the same name, otherwise the plugin won't know which one you're talking about.\n\nNote however that in contrast to the presets, the default target is only run if no other targets are specified. So for the above example, the image is not resized at all.\n\n### Running multiple targets\n\nYou can pass in more than one target to `@getThumbnail()` and they will be executed in order.\n\nFor example, you could do the following to get a small zoom-cropped, sepia'd and rotated image:\n\n```\n\u003cimg src=\"\u003c%= @getThumbnail(\"images/image1.jpg\", 'small', 'zoomcrop', 'sepia', 'rotateleft' %\u003e\"  alt=\"my image\"\u003e\n```\n\nOf course if this was a common occurence on your site, you would be much better off building a target to do it all in one go, like so:\n\n```\nplugins:\n\tthumbnails:\n\t\ttargets:\n\t\t\t'doitall': (img, args) -\u003e\n\t\t\t\treturn img\n\t\t\t\t\t.quality(args.q)\n\t\t\t\t\t.gravity('Center')\n\t\t\t\t\t.resize(args.w, args.h, '^')\n\t\t\t\t\t.crop(args.w, args.h)\n\t\t\t\t\t.sepia()\n\t\t\t\t\t.rotate('black', -90)\n```\n\n### Overriding the default target\n\nYou can assign a target name to `default` in the plugin configuration to make that target the new default action. For example, to make `zoomcrop` the new default:\n\n```\nplugins:\n\tthumbnails:\n\t\ttargets:\n\t\t\t'default': 'zoomcrop'\n```\n\n### Adding different file formats\n\nBy default the plugin supports jpeg and png files. If you wish to use other formats that are supported by ImageMagick/GraphicsMagick you can override the `extensions` option. This limits the file extensions that are allowed to be passed through the plugin.\n\n```\nextensions: ['jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG', 'gif', 'GIF']\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003c!-- INSTALL/ --\u003e\n\n\u003ch2\u003eInstall\u003c/h2\u003e\n\nInstall this DocPad plugin by entering \u003ccode\u003edocpad install thumbnails\u003c/code\u003e into your terminal.\n\n\u003c!-- /INSTALL --\u003e\n\n\u003c!-- HISTORY/ --\u003e\n\n\u003ch2\u003eHistory\u003c/h2\u003e\n\n\u003ca href=\"https://github.com/docpad/docpad-plugin-thumbnails/blob/master/History.md#files\"\u003eDiscover the release history by heading on over to the \u003ccode\u003eHistory.md\u003c/code\u003e file.\u003c/a\u003e\n\n\u003c!-- /HISTORY --\u003e\n\n\n\u003c!-- CONTRIBUTE/ --\u003e\n\n\u003ch2\u003eContribute\u003c/h2\u003e\n\n\u003ca href=\"https://github.com/docpad/docpad-plugin-thumbnails/blob/master/CONTRIBUTING.md#files\"\u003eDiscover how you can contribute by heading on over to the \u003ccode\u003eCONTRIBUTING.md\u003c/code\u003e file.\u003c/a\u003e\n\n\u003c!-- /CONTRIBUTE --\u003e\n\n\n\u003c!-- BACKERS/ --\u003e\n\n\u003ch2\u003eBackers\u003c/h2\u003e\n\n\u003ch3\u003eMaintainers\u003c/h3\u003e\n\nThese amazing people are maintaining this project:\n\n\u003cul\u003e\u003cli\u003e\u003ca href=\"richard.antecki.id.au\"\u003eRichard Antecki\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n\n\u003ch3\u003eSponsors\u003c/h3\u003e\n\nNo sponsors yet! Will you be the first?\n\n\u003cspan class=\"badge-githubsponsors\"\u003e\u003ca href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"\u003e\u003cimg src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-patreon\"\u003e\u003ca href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"\u003e\u003cimg src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-flattr\"\u003e\u003ca href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"\u003e\u003cimg src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-liberapay\"\u003e\u003ca href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"\u003e\u003cimg src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-buymeacoffee\"\u003e\u003ca href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"\u003e\u003cimg src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-opencollective\"\u003e\u003ca href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"\u003e\u003cimg src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-crypto\"\u003e\u003ca href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"\u003e\u003cimg src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-paypal\"\u003e\u003ca href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"\u003e\u003cimg src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\u003cspan class=\"badge-wishlist\"\u003e\u003ca href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"\u003e\u003cimg src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\n\u003ch3\u003eContributors\u003c/h3\u003e\n\nThese amazing people have contributed code to this project:\n\n\u003cul\u003e\u003cli\u003e\u003ca href=\"https://github.com/miletbaker\"\u003eJon Baker\u003c/a\u003e — \u003ca href=\"https://github.com/docpad/docpad-plugin-thumbnails/commits?author=miletbaker\" title=\"View the GitHub contributions of Jon Baker on repository docpad/docpad-plugin-thumbnails\"\u003eview contributions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"richard.antecki.id.au\"\u003eRichard Antecki\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n\n\u003ca href=\"https://github.com/docpad/docpad-plugin-thumbnails/blob/master/CONTRIBUTING.md#files\"\u003eDiscover how you can contribute by heading on over to the \u003ccode\u003eCONTRIBUTING.md\u003c/code\u003e file.\u003c/a\u003e\n\n\u003c!-- /BACKERS --\u003e\n\n\n\u003c!-- LICENSE/ --\u003e\n\n\u003ch2\u003eLicense\u003c/h2\u003e\n\nUnless stated otherwise all works are:\n\n\u003cul\u003e\u003cli\u003eCopyright \u0026copy; \u003ca href=\"richard.antecki.id.au\"\u003eRichard Antecki\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n\nand licensed under:\n\n\u003cul\u003e\u003cli\u003e\u003ca href=\"http://spdx.org/licenses/MIT.html\"\u003eMIT License\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\n\n\u003c!-- /LICENSE --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocpad%2Fdocpad-plugin-thumbnails","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdocpad%2Fdocpad-plugin-thumbnails","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocpad%2Fdocpad-plugin-thumbnails/lists"}