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