nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 5234754364ddfe5fd1a6bb11ff65499faf7e4a63
parent 89e9990570ca160fd843d5ffea494ad250b8d57c
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Fri,  3 Jan 2020 15:50:34 +0100

config: speedup build by skipping some stepps for mapillary package

* replace devtool option whith explicit definition of source map plugin.
  This allows to configure it to excldue mapillary from processing
* require minimized version of mapillary package so that we can skip
  minification during build
* specify config for TerserPlugin to skip minification of mapillary chunk

This drastically reduces build time (minification 20 sec -> 5 sec,
source maps generation 88 sec -> sec) but increases mapillary chunk
gzipped size by 13 Kb/3.7%  (351 Kb -> 364 Kb)

Diffstat:
Msrc/lib/leaflet.control.panoramas/lib/mapillary/index.js | 4++--
Mwebpack/webpack.config.js | 21+++++++++++++++++++--
2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/lib/leaflet.control.panoramas/lib/mapillary/index.js b/src/lib/leaflet.control.panoramas/lib/mapillary/index.js @@ -11,9 +11,9 @@ function getCoverageLayer(options) { function getMapillary() { return new Promise((resolve) => { - require.ensure(['mapillary-js/dist/mapillary.js', 'mapillary-js/dist/mapillary.min.css'], () => { + require.ensure(['mapillary-js/dist/mapillary.min.js', 'mapillary-js/dist/mapillary.min.css'], () => { require('mapillary-js/dist/mapillary.min.css'); - resolve(require('mapillary-js/dist/mapillary.js')); + resolve(require('mapillary-js/dist/mapillary.min.js')); }, 'mapillary'); }); } diff --git a/webpack/webpack.config.js b/webpack/webpack.config.js @@ -4,6 +4,7 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const StyleLintPlugin = require('stylelint-webpack-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const TerserPlugin = require('terser-webpack-plugin'); const paths = require('./paths'); @@ -53,6 +54,14 @@ const babelConfig = { ] }; +const sourceMapOption = { + filename: '[file].map', + columns: isProduction, + exclude: /mapillary/ +}; + +const devToolPlugin = isProduction ? Webpack.SourceMapDevToolPlugin : Webpack.EvalSourceMapDevToolPlugin; + const plugins = [ ...(isProduction ? [new CleanWebpackPlugin()] : []), ...(isProduction ? [new CopyWebpackPlugin([ @@ -77,7 +86,8 @@ const plugins = [ ], emitWarning: isDevelopment, emitError: isProduction - })] : [] + })] : [], + new devToolPlugin(sourceMapOption), ]; const productionCSSLoader = [ @@ -154,7 +164,7 @@ const loaders = [ module.exports = { mode: isProduction ? 'production' : 'development', - devtool: isProduction ? 'source-map' : 'cheap-eval-source-map', + devtool: false, stats: 'errors-warnings', bail: isProduction || isTesting, @@ -168,6 +178,13 @@ module.exports = { name: true }, runtimeChunk: 'single', + minimizer: [new TerserPlugin({ + cache: true, + parallel: true, + sourceMap: true, + exclude: /mapillary/ + })], + }, resolve: {