An open API service indexing awesome lists of open source software.

https://github.com/steven-roberts/chrome-manifest-iconify

Takes a master icon and automatically generates icon set for your Chrome extension by parsing the v2 manifest
https://github.com/steven-roberts/chrome-manifest-iconify

chrome-extension icons javascript manifest

Last synced: 5 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# 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

### 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);
}
};
```

#### chrome-manifest-iconify.async(options) ⇒ Promise.<Array.<module:chrome-manifest-iconify.Icon>>
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 [chrome-manifest-iconify](#module_chrome-manifest-iconify)
**Returns**: Promise.<Array.<module:chrome-manifest-iconify.Icon>> - A promise that
resolves with the generated Icons

| Param | Type | Description |
| --- | --- | --- |
| options | object | The options for generating the Icons |
| options.manifest | string | The path to the v2 manifest.json |
| options.masterIcon | string \| Buffer | Either a path or Buffer of the master icon from which all the generated icons will be reseized |
| [options.outDir] | string | Base directory of the generated Icons. Defaults to parent directory of manifest |
| [options.resizeMode] | string | The name of a [Sharp kernel](https://sharp.pixelplumbing.com/api-resize#resize) |