Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/romanlex/app-manifest-webpack-plugin
Let webpack generate app manifest, all your favicons and icons for you
https://github.com/romanlex/app-manifest-webpack-plugin
favicons manifest pwa webpack webpack-plugin webpack3 webpack4
Last synced: about 2 months ago
JSON representation
Let webpack generate app manifest, all your favicons and icons for you
- Host: GitHub
- URL: https://github.com/romanlex/app-manifest-webpack-plugin
- Owner: romanlex
- License: mit
- Fork: true (jantimon/favicons-webpack-plugin)
- Created: 2018-03-30T16:27:42.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-11-25T11:29:32.000Z (almost 4 years ago)
- Last Synced: 2024-09-19T17:10:39.598Z (about 2 months ago)
- Topics: favicons, manifest, pwa, webpack, webpack-plugin, webpack3, webpack4
- Language: JavaScript
- Homepage:
- Size: 2.12 MB
- Stars: 27
- Watchers: 2
- Forks: 12
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
App Manifest Webpack Plugin
========================================[![npm][npm]][npm-url]
[![node][node]][node-url]
[![deps][deps]][deps-url]
[![travis][travis]][travis-url]
[![Maintainability](https://api.codeclimate.com/v1/badges/ea3844bff7db00d519de/maintainability)](https://codeclimate.com/github/romanlex/app-manifest-webpack-plugin/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/ea3844bff7db00d519de/test_coverage)](https://codeclimate.com/github/romanlex/app-manifest-webpack-plugin/test_coverage)[npm]: https://img.shields.io/npm/v/app-manifest-webpack-plugin.svg
[npm-url]: https://www.npmjs.com/package/app-manifest-webpack-plugin[node]: https://img.shields.io/node/v/app-manifest-webpack-plugin.svg
[node-url]: https://nodejs.org[travis]: https://travis-ci.org/gilbarbara/app-manifest-webpack-plugin.svg
[travis-url]: https://travis-ci.org/romanlex/app-manifest-webpack-plugin[deps]: https://david-dm.org/romanlex/app-manifest-webpack-plugin.svg
[deps-url]: https://david-dm.org/romanlex/app-manifest-webpack-pluginThis is fork of [jantimon/favicons-webpack-plugin](https://github.com/jantimon/favicons-webpack-plugin) with improvements:
+ All tests is rewritten with support of webpack v4
+ All dependencies is updated
+ The plugin is rewritten in accordance with the principles of DRY
+ Added support of webpack v4
+ Added support of all params for config from `favicons` packageAllows to use the [favicons](https://github.com/haydenbleasel/favicons) generator with webpack.
This plugin also generates manifest files:
+ `manifest.json`
+ `browserconfig.xml`
+ `yandex-browser-manifest.json`Screenshot with inject to HtmlWebpackPlugin
------------![Screenshot](example/Screenshot_20180401_111647.png?raw=true "Screenshot")
Installation
------------You must be running `webpack (version ^2.x)` on `node (version ^6.14.1)`
Install:
```bash
npm install --save-dev app-manifest-webpack-plugin
```Install with yarn:
```bash
yarn add -D app-manifest-webpack-plugin
```Basic Usage
-----------Add the plugin to your webpack config as follows:
```javascript
const AppManifestWebpackPlugin = require('app-manifest-webpack-plugin')...
plugins: [
new AppManifestWebpackPlugin({
logo: 'my-logo.png',
inject: false,
})
]
```This basic configuration will generate 37 different icons for iOS devices, Android devices and the Desktop browser out of your `my-logo.png` file.
It can optionally also generate a `iconstats.json` for you.
Usage with `html-webpack-plugin`
-----------If you are using with [html-webpack-plugin](https://github.com/ampedandwired/html-webpack-plugin) it will also inject the necessary html for you:
```html
...
...
``````javascript
plugins: [
new HtmlWebpackPlugin(),
// Make sure that AppManifestWebpackPlugin below HtmlWebpackPlugin
new AppManifestWebpackPlugin({
logo: 'my-logo.png',
statsFilename: 'iconstats.json',
persistentCache: false,
config: {
path: '/static/assets/',
},
}),
]
```All properties
-----------```javascript
plugins: [
new AppManifestWebpackPlugin({
// Your source logo
logo: 'my-logo.png',
// Prefix for file names
prefix: '/assets/icons-[hash:8]/', // default '/'
// Output path for icons (icons will be saved to output.path(webpack config) + this key)
output: '/icons-[hash:8]/', // default '/'. Can be absolute or relative
// Emit all stats of the generated icons
emitStats: false,
// The name of the json containing all favicon information
statsFilename: 'iconstats.json', // can be absolute path
// Encode html entities in stats file (Example json_decode from php doesn't support html strings with escaped double quotes but it's valid json)
statsEncodeHtml: false,
// Generate a cache file with control hashes and
// don't rebuild the favicons until those hashes change
persistentCache: true,
// Inject the html into the html-webpack-plugin. Default true
inject: true,
// favicons configuration object. Support all keys of favicons (see https://github.com/haydenbleasel/favicons)
config: {
loadManifestWithCredentials: true, // use crossOrigin="use-credentials" for link tag with manifest
appName: 'Webpack App', // Your application's name. `string`
appDescription: null, // Your application's description. `string`
developerName: null, // Your (or your developer's) name. `string`
developerURL: null, // Your (or your developer's) URL. `string`
background: '#fff', // Background colour for flattened icons. `string`
theme_color: '#fff', // Theme color for browser chrome. `string`
display: 'standalone', // Android display: "browser" or "standalone". `string`
orientation: 'portrait', // Android orientation: "portrait" or "landscape". `string`
start_url: '/?homescreen=1', // Android start application's URL. `string`
version: '1.0', // Your application's version number. `number`
logging: false, // Print logs to console? `boolean`
icons: {
// Platform Options:
// - offset - offset in percentage
// - shadow - drop shadow for Android icons, available online only
// - background:
// * false - use default
// * true - force use default, e.g. set background for Android icons
// * color - set background for the specified icons
//
android: true, // Create Android homescreen icon. `boolean` or `{ offset, background, shadow }`
appleIcon: true, // Create Apple touch icons. `boolean` or `{ offset, background }`
appleStartup: true, // Create Apple startup images. `boolean` or `{ offset, background }`
coast: { offset: 25 }, // Create Opera Coast icon with offset 25%. `boolean` or `{ offset, background }`
favicons: true, // Create regular favicons. `boolean`
firefox: true, // Create Firefox OS icons. `boolean` or `{ offset, background }`
windows: true, // Create Windows 8 tile icons. `boolean` or `{ background }`
yandex: true, // Create Yandex browser icon. `boolean` or `{ background }`
},
}
})
]
```Prefix and output options
-----------
This options help you save output files or change paths to icons in your html as you want.
Example you want save output icons to `icons/` directory in your build path but in html you want set another prefix for files, example `/assets/webpack/icons/`
when you can use options for this```javascript
new AppManifestWebpackPlugin({
// Your source logo
logo: 'my-logo.png',
// Prefix for file names (html will be container icons with this prefix)
prefix: '/assets/webpack/',
// Output path for icons (icons will be saved to output.path(webpack config) + this key)
output: '/icons-[hash:8]/'
})
```html file will be contains current paths
```html
```
but files will be saved to `/icons-4b62aad7/` directory and you `iconstats.json` contains correct outputFilePrefix
```json
{ "outputFilePrefix":"/assets/webpack/icons-4b62aad7/" }
```#### Keep in mind what `prefix` change filenames inside html, `output` it is the path where icons wiil be saved
#### Or another case. You want save icons above the directory of webpack `output` and want set corrent path in the manifest files and html files
```javascript
new AppManifestWebpackPlugin({
// Your source logo
logo: 'my-logo.png',
// Output path can be relative. Icons will be saved to webpack output directory + output
output: '../icons/',
// Change prefix of files for correct paths in your html and manifest files
prefix: '/icons/'
})
```Stats file
-----------
When you use option `emitStats` the plugin is generated stats file with `statsFilename` and contains usefull data```json
{
"outputFilePrefix":"/",
"html": [], // array of html strings
"files": [], // array of generated icon names
"encodedHtml": "", // endoded html string if you use statsEncodeHtml option
}```
# Changelog
Take a look at the [CHANGELOG.md](https://github.com/romanlex/favicons-webpack-plugin/tree/master/CHANGELOG.md).
# Contribution
You're free to contribute to this project by submitting [issues](https://github.com/romanlex/favicons-webpack-plugin/issues) and/or [pull requests](https://github.com/romanlex/favicons-webpack-plugin/pulls). This project is test-driven, so keep in mind that every change and new feature should be covered by tests.
This project uses the [semistandard code style](https://github.com/Flet/semistandard).# License
This project is licensed under [MIT](https://github.com/romanlex/favicons-webpack-plugin/blob/master/LICENSE).