UNPKG

chrome-manifest-iconify

Version:

Takes a master icon and automatically generates icon set for your Chrome extension or app by parsing the v2 manifest

92 lines (70 loc) 4.6 kB
# chrome-manifest-iconify [![NPM version](https://img.shields.io/npm/v/chrome-manifest-iconify.svg)](https://www.npmjs.com/package/chrome-manifest-iconify) [![node](https://img.shields.io/node/v/chrome-manifest-iconify.svg)](https://www.npmjs.com/package/chrome-manifest-iconify) [![Build Status](https://travis-ci.org/Steven-Roberts/chrome-manifest-iconify.svg?branch=master)](https://travis-ci.org/Steven-Roberts/chrome-manifest-iconify) [![Coverage Status](https://coveralls.io/repos/github/Steven-Roberts/chrome-manifest-iconify/badge.svg)](https://coveralls.io/github/Steven-Roberts/chrome-manifest-iconify) [![dependencies Status](https://david-dm.org/Steven-Roberts/chrome-manifest-iconify/status.svg)](https://david-dm.org/Steven-Roberts/chrome-manifest-iconify) [![devDependencies Status](https://david-dm.org/Steven-Roberts/chrome-manifest-iconify/dev-status.svg)](https://david-dm.org/Steven-Roberts/chrome-manifest-iconify?type=dev) When creating a Chrome extension, you need to provide a set of icons for context menus, browser actions, page actions, and the Chrome Web Store. Usually, these are just resized versions of the same image. The goal of chrome-manifest-iconify is to intelligently handle the tedious process of generated all these resized clones. All you need to do is provide it a master icon and [v2 manifest](https://developer.chrome.com/extensions/manifest) file. It will parse the manifest to determine the sizes, names, types, and paths of the icons it needs to generate. You can choose from several resizing algorithms as provided by [Sharp](https://sharp.pixelplumbing.com/) so your entire icon set looks awesome. ## Installation ```shell npm install --save-dev chrome-manifest-iconify ``` ## CLI ```shell Options: --help Show help [boolean] --version Show version number [boolean] -i, --master-icon Path to the master icon [string] [required] -m, --manifest Path to the v2 manifest.json [string] [default: "manifest.json"] -r, --resize-mode Algorithm for resizing the master icon [choices: "nearest", "cubic", "mitchell", "lanczos2", "lanczos3"] [default: "lanczos3"] -o, --out-dir Directory to write the icons [string] Examples: chrome-manifest-iconify -i master.svg chrome-manifest-iconify -i master.jpg -m src/manifest.json -r nearest -o build/icons ``` ## Gulp Instead of directly using this API, you might find it easier to use the [Gulp](https://github.com/gulpjs/gulp) plugin [gulp-chrome-manifest-iconify](https://github.com/Steven-Roberts/gulp-chrome-manifest-iconify) for your project. ## API <a name="module_chrome-manifest-iconify"></a> ### chrome-manifest-iconify The chrome-manifest-iconify module **Example** ```js const chromeManifestIconify = require('chrome-manifest-iconify'); const loadIcons = async () => { try { const icons = await chromeManifestIconify.async({ manifest: 'src/manifest.json', masterIcon: 'img/test-icon.png' }); // Do stuff with icons const buffers = await Promise.all(icons.map((i) => i.contents)); console.log(buffers); } catch (err) { // Oh, no! Something bad happened console.error(err); } }; ``` <a name="module_chrome-manifest-iconify.async"></a> #### chrome-manifest-iconify.async(options) ⇒ <code>Promise.&lt;Array.&lt;module:chrome-manifest-iconify.Icon&gt;&gt;</code> Generates icon set for a Chrome extension by parsing the v2 manifest. Note that this function does not actually write the files. **Kind**: static method of [<code>chrome-manifest-iconify</code>](#module_chrome-manifest-iconify) **Returns**: <code>Promise.&lt;Array.&lt;module:chrome-manifest-iconify.Icon&gt;&gt;</code> - A promise that resolves with the generated Icons | Param | Type | Description | | --- | --- | --- | | options | <code>object</code> | The options for generating the Icons | | options.manifest | <code>string</code> | The path to the v2 manifest.json | | options.masterIcon | <code>string</code> \| <code>Buffer</code> | Either a path or Buffer of the master icon from which all the generated icons will be reseized | | [options.outDir] | <code>string</code> | Base directory of the generated Icons. Defaults to parent directory of manifest | | [options.resizeMode] | <code>string</code> | The name of a [Sharp kernel](https://sharp.pixelplumbing.com/api-resize#resize) |