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
Markdown
[](https://www.npmjs.com/package/chrome-manifest-iconify)
[](https://www.npmjs.com/package/chrome-manifest-iconify)
[](https://travis-ci.org/Steven-Roberts/chrome-manifest-iconify)
[](https://coveralls.io/github/Steven-Roberts/chrome-manifest-iconify)
[](https://david-dm.org/Steven-Roberts/chrome-manifest-iconify)
[](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.
```shell
npm install --save-dev chrome-manifest-iconify
```
```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
[] [default: "manifest.json"]
-r, --resize-mode Algorithm for resizing the master icon
[] [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
```
Instead of directly using this API, you might find it easier to use the
[](https://github.com/gulpjs/gulp) plugin
[](https://github.com/Steven-Roberts/gulp-chrome-manifest-iconify)
for your project.
<a name="module_chrome-manifest-iconify"></a>
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>
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>](
**Returns**: <code>Promise.<Array.<module:chrome-manifest-iconify.Icon>></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) |