diff --git a/app/client/dist/icons/.cache b/app/client/dist/icons/.cache
index 8c37422..c83dd6b 100644
--- a/app/client/dist/icons/.cache
+++ b/app/client/dist/icons/.cache
@@ -1 +1 @@
-{"hash":"3deb17371acdc75398d81da38fad464c","version":"0.0.9","optionHash":"c067d9b2d6a96a86192ece0162f1b1ac","result":{"outputFilePrefix":"/icons/","html":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"files":["/icons/android-chrome-36x36.png","/icons/android-chrome-48x48.png","/icons/android-chrome-72x72.png","/icons/android-chrome-96x96.png","/icons/android-chrome-144x144.png","/icons/android-chrome-192x192.png","/icons/android-chrome-256x256.png","/icons/android-chrome-384x384.png","/icons/android-chrome-512x512.png","/icons/apple-touch-icon-60x60.png","/icons/apple-touch-icon-57x57.png","/icons/apple-touch-icon-72x72.png","/icons/apple-touch-icon-76x76.png","/icons/apple-touch-icon-120x120.png","/icons/apple-touch-icon-144x144.png","/icons/apple-touch-icon-152x152.png","/icons/apple-touch-icon-167x167.png","/icons/apple-touch-icon-114x114.png","/icons/apple-touch-icon-180x180.png","/icons/apple-touch-icon-precomposed.png","/icons/apple-touch-icon.png","/icons/coast-228x228.png","/icons/yandex-browser-50x50.png","/icons/mstile-70x70.png","/icons/mstile-144x144.png","/icons/mstile-150x150.png","/icons/mstile-310x150.png","/icons/mstile-310x310.png","/icons/favicon-16x16.png","/icons/favicon-32x32.png","/icons/favicon.ico","/icons/apple-touch-startup-image-640x920.png","/icons/apple-touch-startup-image-320x460.png","/icons/apple-touch-startup-image-640x1096.png","/icons/apple-touch-startup-image-748x1024.png","/icons/apple-touch-startup-image-768x1004.png","/icons/apple-touch-startup-image-750x1294.png","/icons/apple-touch-startup-image-1242x2148.png","/icons/apple-touch-startup-image-1182x2208.png","/icons/apple-touch-startup-image-1496x2048.png","/icons/apple-touch-startup-image-1536x2008.png","/icons/firefox_app_60x60.png","/icons/firefox_app_128x128.png","/icons/firefox_app_512x512.png","/icons/manifest.json","/icons/yandex-browser-manifest.json","/icons/browserconfig.xml","/icons/manifest.webapp"]}}
\ No newline at end of file
+{"hash":"3deb17371acdc75398d81da38fad464c","version":"0.0.9","optionHash":"c067d9b2d6a96a86192ece0162f1b1ac","result":{"outputFilePrefix":"/icons/","html":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"files":["/icons/android-chrome-36x36.png","/icons/android-chrome-48x48.png","/icons/android-chrome-72x72.png","/icons/android-chrome-96x96.png","/icons/android-chrome-144x144.png","/icons/android-chrome-192x192.png","/icons/android-chrome-256x256.png","/icons/android-chrome-384x384.png","/icons/android-chrome-512x512.png","/icons/apple-touch-icon-57x57.png","/icons/apple-touch-icon-60x60.png","/icons/apple-touch-icon-72x72.png","/icons/apple-touch-icon-76x76.png","/icons/apple-touch-icon-114x114.png","/icons/apple-touch-icon-120x120.png","/icons/apple-touch-icon-144x144.png","/icons/apple-touch-icon-167x167.png","/icons/apple-touch-icon-152x152.png","/icons/apple-touch-icon-180x180.png","/icons/apple-touch-icon.png","/icons/apple-touch-icon-precomposed.png","/icons/coast-228x228.png","/icons/yandex-browser-50x50.png","/icons/favicon-16x16.png","/icons/favicon-32x32.png","/icons/favicon.ico","/icons/mstile-144x144.png","/icons/mstile-150x150.png","/icons/mstile-70x70.png","/icons/mstile-310x310.png","/icons/mstile-310x150.png","/icons/apple-touch-startup-image-640x920.png","/icons/apple-touch-startup-image-640x1096.png","/icons/apple-touch-startup-image-320x460.png","/icons/apple-touch-startup-image-748x1024.png","/icons/apple-touch-startup-image-768x1004.png","/icons/apple-touch-startup-image-750x1294.png","/icons/apple-touch-startup-image-1242x2148.png","/icons/apple-touch-startup-image-1182x2208.png","/icons/apple-touch-startup-image-1536x2008.png","/icons/apple-touch-startup-image-1496x2048.png","/icons/firefox_app_60x60.png","/icons/firefox_app_128x128.png","/icons/firefox_app_512x512.png","/icons/manifest.json","/icons/yandex-browser-manifest.json","/icons/browserconfig.xml","/icons/manifest.webapp"]}}
\ No newline at end of file
diff --git a/package.json b/package.json
index 6fdea1b..0632488 100755
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"yarn": "^1.21.1"
},
"devDependencies": {
+ "@a2nt/image-sprite-webpack-plugin": "^0.2.5",
"@google/markerclusterer": "^1.0.3",
"animate.css": "^3.7.0",
"autoprefixer": "^7.2.5",
diff --git a/webpack.config.prod.js b/webpack.config.prod.js
index 4998762..c0083ac 100755
--- a/webpack.config.prod.js
+++ b/webpack.config.prod.js
@@ -18,6 +18,7 @@ const FaviconsWebpackPlugin = require('favicons-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const ImageminPlugin = require('imagemin-webpack');
+const ImageSpritePlugin = require('@a2nt/image-sprite-webpack-plugin');
let plugins = [
new webpack.DefinePlugin({
@@ -33,28 +34,6 @@ let plugins = [
filename: 'css/[name].css',
allChunks: true,
}),
-
- new FaviconsWebpackPlugin({
- title: 'Webpack App',
- logo: path.join(__dirname, conf.APPDIR, conf.SRC, 'favicon.png'),
- prefix: '/icons/',
- emitStats: false,
- persistentCache: true,
- inject: false,
- statsFilename: path.join(conf.APPDIR, conf.DIST, 'icons', 'iconstats.json'),
- icons: {
- android: true,
- appleIcon: true,
- appleStartup: true,
- coast: true,
- favicons: true,
- firefox: true,
- opengraph: true,
- twitter: true,
- yandex: true,
- windows: true,
- },
- }),
new OptimizeCssAssetsPlugin({
//assetNameRegExp: /\.optimize\.css$/g,
cssProcessor: require('cssnano'),
@@ -77,15 +56,34 @@ let plugins = [
},
canPrint: true,
}),
+ new FaviconsWebpackPlugin({
+ title: 'Webpack App',
+ logo: path.join(__dirname, conf.APPDIR, conf.SRC, 'favicon.png'),
+ prefix: '/icons/',
+ emitStats: false,
+ persistentCache: true,
+ inject: false,
+ statsFilename: path.join(conf.APPDIR, conf.DIST, 'icons', 'iconstats.json'),
+ icons: {
+ android: true,
+ appleIcon: true,
+ appleStartup: true,
+ coast: true,
+ favicons: true,
+ firefox: true,
+ opengraph: true,
+ twitter: true,
+ yandex: true,
+ windows: true,
+ },
+ }),
new ImageminPlugin({
bail: false, // Ignore errors on corrupted images
cache: true,
+ maxConcurrency: 3,
+ exclude: /original/,
filter: (source, sourcePath) => {
- if (source.byteLength < 512000) {
- return false;
- }
-
- return true;
+ return source.byteLength < 512000;
},
imageminOptions: {
plugins: [
@@ -105,6 +103,17 @@ let plugins = [
],
},
}),
+ new ImageSpritePlugin({
+ exclude: /exclude|original|default-|icons|sprite/,
+ commentOrigin: false,
+ compress: true,
+ extensions: ['png'],
+ indent: '',
+ log: true,
+ //outputPath: path.join(__dirname, conf.APPDIR, conf.DIST),
+ outputFilename: 'img/sprite-[hash].png',
+ padding: 0,
+ }),
];
// add themes favicons