App Manifest Webpack Plugin
This is fork of 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
package
Allows to use the favicons generator with webpack.
This plugin also generates manifest files:
manifest.json
browserconfig.xml
yandex-browser-manifest.json
Screenshot with inject to HtmlWebpackPlugin
Installation
You must be running webpack (version ^2.x)
on node (version ^6.14.1)
Install:
npm install --save-dev app-manifest-webpack-plugin
Install with yarn:
yarn add -D app-manifest-webpack-plugin
Basic Usage
Add the plugin to your webpack config as follows:
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 it will also inject the necessary html for you:
<link rel="apple-touch-icon" sizes="57x57" href="icons-366a3768de05f9e78c392fa62b8fbb80/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="icons-366a3768de05f9e78c392fa62b8fbb80/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="icons-366a3768de05f9e78c392fa62b8fbb80/apple-touch-icon-72x72.png">
...
...
<link rel="apple-touch-startup-image" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" href="icons-366a3768de05f9e78c392fa62b8fbb80/apple-touch-startup-image-1536x2008.png">
plugins: [
new HtmlWebpackPlugin(),
new AppManifestWebpackPlugin({
logo: 'my-logo.png',
statsFilename: 'iconstats.json',
persistentCache: false,
config: {
path: '/static/assets/',
},
}),
]
All properties
plugins: [
new AppManifestWebpackPlugin({
logo: 'my-logo.png',
prefix: '/assets/icons-[hash:8]/',
output: '/icons-[hash:8]/',
emitStats: false,
statsFilename: 'iconstats.json',
statsEncodeHtml: false,
persistentCache: true,
inject: true,
config: {
appName: 'Webpack App',
appDescription: null,
developerName: null,
developerURL: null,
background: '#fff',
theme_color: '#fff',
display: 'standalone',
orientation: 'portrait',
start_url: '/?homescreen=1',
version: '1.0',
logging: false,
icons: {
android: true,
appleIcon: true,
appleStartup: true,
coast: { offset: 25 },
favicons: true,
firefox: true,
windows: true,
yandex: true,
},
}
})
]
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
new AppManifestWebpackPlugin({
logo: 'my-logo.png',
prefix: '/assets/webpack/',
output: '/icons-[hash:8]/'
})
html file will be contains current paths
<link rel="apple-touch-icon" sizes="120x120" href="/assets/webpack/icons-4b62aad7/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/assets/webpack/icons-4b62aad7/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/assets/webpack/icons-4b62aad7/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/webpack/icons-4b62aad7/apple-touch-icon-180x180.png">
but files will be saved to /icons-4b62aad7/
directory and you iconstats.json
contains correct outputFilePrefix
{ "outputFilePrefix":"/assets/webpack/icons-4b62aad7/" }
Keep in mind what prefix
change filenames inside html, output
it is the path where icons wiil be saved
Stats file
When you use option emitStats
the plugin is generated stats file with statsFilename
and contains usefull data
{
"outputFilePrefix":"/",
"html": [],
"files": [],
"encodedHtml": "",
}
Changelog
Take a look at the CHANGELOG.md.
Contribution
You're free to contribute to this project by submitting issues and/or pull requests. 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.
License
This project is licensed under MIT.