jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/391285 )

Change subject: Chore: use Uglify version with ES6 support
......................................................................


Chore: use Uglify version with ES6 support

According to the docs, Webpack uses an older version of
uglifyjs-webpack-plugin when the `-p` command line option is specified.
This older version of the plugin uses uglify-js which does not support
ES6 targets, which is needed for a server Webpack configuration. Either
the TypeScript compiler target and libraries need to be updated to a
configuration similar to the client or the Webpack config needs to be
modified to use the latest version of Uglify plugin. This patch takes
the latter approach. The build products are approximately the same
except that the source maps are about twice as large.

Via https://webpack.js.org/plugins/uglifyjs-webpack-plugin/:

  Webpack =< v3.0.0 currently contains v0.4.6 of this plugin under
  webpack.optimize.UglifyJsPlugin as an alias. For usage of the latest
  version (v1.0.0), please follow the instructions below. Aliasing
  v1.0.0 as webpack.optimize.UglifyJsPlugin is scheduled for webpack
  v4.0.0.

  npm i -D uglifyjs-webpack-plugin

Alternative tsconfig.json changes:

  -  "target": "ES2015",
  -  "module": "commonjs",
  +  "target": "es5",
  +  "module": "esnext",
  +  "lib": ["es2015", "dom"],

Bug: T177235
Change-Id: I672af9b2597d5ef85205ee1b7bd0193314b7c5e1
---
M package-lock.json
M package.json
M webpack.config.ts
3 files changed, 331 insertions(+), 7 deletions(-)

Approvals:
  Jhernandez: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/package-lock.json b/package-lock.json
index 16fed7a..523d7a9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -289,6 +289,12 @@
         }
       }
     },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz";,
+      "integrity": 
"sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+      "dev": true
+    },
     "argparse": {
       "version": "1.0.9",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz";,
@@ -480,6 +486,12 @@
       "version": "1.10.0",
       "resolved": 
"https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz";,
       "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
+      "dev": true
+    },
+    "bluebird": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz";,
+      "integrity": 
"sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
       "dev": true
     },
     "bn.js": {
@@ -761,6 +773,27 @@
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz";,
       "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
     },
+    "cacache": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.0.tgz";,
+      "integrity": 
"sha512-s9h6I9NY3KcBjfuS28K6XNmrv/HNFSzlpVD6eYMXugZg3Y8jjI1lUzTeUMa0oKByCDtHfsIy5Ec7KgWRnC5gtg==",
+      "dev": true,
+      "requires": {
+        "bluebird": "3.5.1",
+        "chownr": "1.0.1",
+        "glob": "7.1.2",
+        "graceful-fs": "4.1.11",
+        "lru-cache": "4.1.1",
+        "mississippi": "1.3.0",
+        "mkdirp": "0.5.1",
+        "move-concurrently": "1.0.1",
+        "promise-inflight": "1.0.1",
+        "rimraf": "2.6.2",
+        "ssri": "5.0.0",
+        "unique-filename": "1.1.0",
+        "y18n": "3.2.1"
+      }
+    },
     "caller-path": {
       "version": "0.1.0",
       "resolved": 
"https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz";,
@@ -862,6 +895,12 @@
         "path-is-absolute": "1.0.1",
         "readdirp": "2.1.0"
       }
+    },
+    "chownr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz";,
+      "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+      "dev": true
     },
     "ci-info": {
       "version": "1.0.0",
@@ -1047,6 +1086,12 @@
         "readable-stream": "2.3.3"
       }
     },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz";,
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
     "compressible": {
       "version": "2.0.11",
       "resolved": 
"https://registry.npmjs.org/compressible/-/compressible-2.0.11.tgz";,
@@ -1156,6 +1201,20 @@
       "version": "1.0.6",
       "resolved": 
"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";,
       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": 
"https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz";,
+      "integrity": 
"sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+      "dev": true,
+      "requires": {
+        "aproba": "1.2.0",
+        "fs-write-stream-atomic": "1.0.10",
+        "iferr": "0.1.5",
+        "mkdirp": "0.5.1",
+        "rimraf": "2.6.2",
+        "run-queue": "1.0.3"
+      }
     },
     "copyfiles": {
       "version": "1.2.0",
@@ -1360,6 +1419,12 @@
       "requires": {
         "array-find-index": "1.0.2"
       }
+    },
+    "cyclist": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz";,
+      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+      "dev": true
     },
     "d": {
       "version": "1.0.0",
@@ -1599,6 +1664,18 @@
       "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
       "dev": true
     },
+    "duplexify": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz";,
+      "integrity": 
"sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "1.4.0",
+        "inherits": "2.0.3",
+        "readable-stream": "2.3.3",
+        "stream-shift": "1.0.0"
+      }
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";,
@@ -1642,6 +1719,15 @@
       "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
       "requires": {
         "iconv-lite": "0.4.18"
+      }
+    },
+    "end-of-stream": {
+      "version": "1.4.0",
+      "resolved": 
"https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz";,
+      "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
+      "dev": true,
+      "requires": {
+        "once": "1.4.0"
       }
     },
     "enhanced-resolve": {
@@ -2361,6 +2447,28 @@
         }
       }
     },
+    "find-cache-dir": {
+      "version": "1.0.0",
+      "resolved": 
"https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz";,
+      "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+      "dev": true,
+      "requires": {
+        "commondir": "1.0.1",
+        "make-dir": "1.1.0",
+        "pkg-dir": "2.0.0"
+      },
+      "dependencies": {
+        "pkg-dir": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz";,
+          "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+          "dev": true,
+          "requires": {
+            "find-up": "2.1.0"
+          }
+        }
+      }
+    },
     "find-up": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz";,
@@ -2387,6 +2495,16 @@
       "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz";,
       "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
       "dev": true
+    },
+    "flush-write-stream": {
+      "version": "1.0.2",
+      "resolved": 
"https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.2.tgz";,
+      "integrity": "sha1-yBuQ2HRnZvGmCaRoCZRsRd2K5Bc=",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3",
+        "readable-stream": "2.3.3"
+      }
     },
     "for-in": {
       "version": "1.0.2",
@@ -2433,6 +2551,28 @@
       "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz";,
       "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
       "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz";,
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3",
+        "readable-stream": "2.3.3"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": 
"https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";,
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "4.1.11",
+        "iferr": "0.1.5",
+        "imurmurhash": "0.1.4",
+        "readable-stream": "2.3.3"
+      }
     },
     "fs.realpath": {
       "version": "1.0.0",
@@ -2875,6 +3015,12 @@
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz";,
       "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz";,
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
       "dev": true
     },
     "ignore": {
@@ -4134,6 +4280,24 @@
       "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
       "dev": true
     },
+    "mississippi": {
+      "version": "1.3.0",
+      "resolved": 
"https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz";,
+      "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=",
+      "dev": true,
+      "requires": {
+        "concat-stream": "1.6.0",
+        "duplexify": "3.5.1",
+        "end-of-stream": "1.4.0",
+        "flush-write-stream": "1.0.2",
+        "from2": "2.3.0",
+        "parallel-transform": "1.1.0",
+        "pump": "1.0.2",
+        "pumpify": "1.3.5",
+        "stream-each": "1.2.2",
+        "through2": "2.0.3"
+      }
+    },
     "mkdirp": {
       "version": "0.5.1",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";,
@@ -4191,6 +4355,20 @@
             "has-flag": "2.0.0"
           }
         }
+      }
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": 
"https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz";,
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "dev": true,
+      "requires": {
+        "aproba": "1.2.0",
+        "copy-concurrently": "1.0.5",
+        "fs-write-stream-atomic": "1.0.10",
+        "mkdirp": "0.5.1",
+        "rimraf": "2.6.2",
+        "run-queue": "1.0.3"
       }
     },
     "ms": {
@@ -4629,6 +4807,17 @@
       "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz";,
       "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
       "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.1.0",
+      "resolved": 
"https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz";,
+      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "dev": true,
+      "requires": {
+        "cyclist": "0.2.2",
+        "inherits": "2.0.3",
+        "readable-stream": "2.3.3"
+      }
     },
     "parse-asn1": {
       "version": "5.1.0",
@@ -5439,6 +5628,12 @@
       "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
       "dev": true
     },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": 
"https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz";,
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
     "proxy-addr": {
       "version": "2.0.2",
       "resolved": 
"https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz";,
@@ -5480,6 +5675,27 @@
         "create-hash": "1.1.3",
         "parse-asn1": "5.1.0",
         "randombytes": "2.0.5"
+      }
+    },
+    "pump": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz";,
+      "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "1.4.0",
+        "once": "1.4.0"
+      }
+    },
+    "pumpify": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.3.5.tgz";,
+      "integrity": "sha1-G2ccYZlAq8rqwK0OOjwWS+dgmTs=",
+      "dev": true,
+      "requires": {
+        "duplexify": "3.5.1",
+        "inherits": "2.0.3",
+        "pump": "1.0.2"
       }
     },
     "punycode": {
@@ -5897,6 +6113,15 @@
       "dev": true,
       "requires": {
         "is-promise": "2.1.0"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz";,
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "dev": true,
+      "requires": {
+        "aproba": "1.2.0"
       }
     },
     "rx-lite": {
@@ -6328,6 +6553,15 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
+    "ssri": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz";,
+      "integrity": 
"sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.1"
+      }
+    },
     "statuses": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz";,
@@ -6352,6 +6586,16 @@
         "duplexer": "0.1.1"
       }
     },
+    "stream-each": {
+      "version": "1.2.2",
+      "resolved": 
"https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz";,
+      "integrity": 
"sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "1.4.0",
+        "stream-shift": "1.0.0"
+      }
+    },
     "stream-http": {
       "version": "2.7.2",
       "resolved": 
"https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz";,
@@ -6364,6 +6608,12 @@
         "to-arraybuffer": "1.0.1",
         "xtend": "4.0.1"
       }
+    },
+    "stream-shift": {
+      "version": "1.0.0",
+      "resolved": 
"https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz";,
+      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+      "dev": true
     },
     "strict-uri-encode": {
       "version": "1.1.0",
@@ -6848,6 +7098,24 @@
         "semver": "5.4.1"
       }
     },
+    "uglify-es": {
+      "version": "3.1.9",
+      "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.9.tgz";,
+      "integrity": 
"sha512-wVSiJKHDgDDFmxTVVvnbAH6IpamAFHYDI+5JvwPdaqIMnk8kRTX2JKwq1Fx7gb2+Jj5Dus8kzvIpKkWOMNU51w==",
+      "dev": true,
+      "requires": {
+        "commander": "2.11.0",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": 
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";,
+          "integrity": 
"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
     "uglify-js": {
       "version": "2.8.29",
       "resolved": 
"https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz";,
@@ -6881,14 +7149,18 @@
       "optional": true
     },
     "uglifyjs-webpack-plugin": {
-      "version": "0.4.6",
-      "resolved": 
"https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz";,
-      "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
+      "version": "1.0.1",
+      "resolved": 
"https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.0.1.tgz";,
+      "integrity": 
"sha512-3IJhab8Xq7s6XqoPiVFuDpijefJsIrzACT4ggDErSxJAsB9GLDyuWpN7vuX4Lslu/nzIRz2NyXNX/fRMOgqRFw==",
       "dev": true,
       "requires": {
+        "cacache": "10.0.0",
+        "find-cache-dir": "1.0.0",
+        "schema-utils": "0.3.0",
         "source-map": "0.5.6",
-        "uglify-js": "2.8.29",
-        "webpack-sources": "1.0.1"
+        "uglify-es": "3.1.9",
+        "webpack-sources": "1.0.1",
+        "worker-farm": "1.5.1"
       }
     },
     "undefsafe": {
@@ -6922,6 +7194,24 @@
       "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz";,
       "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
       "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.0",
+      "resolved": 
"https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz";,
+      "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
+      "dev": true,
+      "requires": {
+        "unique-slug": "2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.0",
+      "resolved": 
"https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz";,
+      "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "0.1.4"
+      }
     },
     "unique-string": {
       "version": "1.0.0",
@@ -7199,6 +7489,17 @@
           "dev": true,
           "requires": {
             "has-flag": "2.0.0"
+          }
+        },
+        "uglifyjs-webpack-plugin": {
+          "version": "0.4.6",
+          "resolved": 
"https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz";,
+          "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
+          "dev": true,
+          "requires": {
+            "source-map": "0.5.6",
+            "uglify-js": "2.8.29",
+            "webpack-sources": "1.0.1"
           }
         }
       }
@@ -7573,6 +7874,16 @@
       "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
       "dev": true
     },
+    "worker-farm": {
+      "version": "1.5.1",
+      "resolved": 
"https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.1.tgz";,
+      "integrity": 
"sha512-T5NH6Wqsd8MwGD4AK8BBllUy6LmHaqjEOyo/YIUEegZui6/v5Bqde//3jwyE3PGiGYMmWi06exFBi5LNhhPFNw==",
+      "dev": true,
+      "requires": {
+        "errno": "0.1.4",
+        "xtend": "4.0.1"
+      }
+    },
     "wrap-ansi": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz";,
diff --git a/package.json b/package.json
index a617e79..f2c786c 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
     "start:server": "nodemon -i dist -i src/client -e js,json,ts,tsx 
${VERBOSE:--q} -x 'ts-node -P src/server src/server'",
     "start:client": "webpack-dev-server -dw",
     "build:server": "tsc -p src/server && copyup 'src/**/*.{css,svg}' dist/",
-    "build:client": "webpack -p"
+    "build:client": "webpack"
   },
   "repository": {
     "type": "git",
@@ -88,6 +88,7 @@
     "ts-node": "3.3.0",
     "typescript": "2.5.3",
     "typescript-eslint-parser": "8.0.1",
+    "uglifyjs-webpack-plugin": "1.0.1",
     "webpack": "3.6.0",
     "webpack-dev-server": "2.9.1",
     "wikimedia-ui-base": "0.9.2"
diff --git a/webpack.config.ts b/webpack.config.ts
index c8dc39e..ab4ec7e 100644
--- a/webpack.config.ts
+++ b/webpack.config.ts
@@ -9,6 +9,7 @@
   WEBPACK_DEV_SERVER_PORT,
   WEBPACK_DEV_SERVER_URL
 } from "./src/server/config";
+const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
 
 const pkg = require("./package.json");
 
@@ -145,7 +146,7 @@
               hmr: false
             }
           },
-          use: ["css-loader"]
+          use: { loader: "css-loader", options: { minimize: PRODUCTION } }
         })
       },
       {
@@ -321,6 +322,17 @@
       prettyPrint: VERBOSE,
       filename: "assets-manifest.json",
       path: PATHS.public.output
+    }),
+
+    new UglifyJSPlugin({
+      // Improve rebuild performance with file caching.
+      cache: true,
+      // Improve build performance with parallel processing.
+      parallel: true,
+      // Generate source maps at the expense of compilation time.
+      sourceMap: true
+      // extractComments appears to be enabled by default although the
+      // documentation says otherwise.
     })
   );
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/391285
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I672af9b2597d5ef85205ee1b7bd0193314b7c5e1
Gerrit-PatchSet: 1
Gerrit-Project: marvin
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
Gerrit-Reviewer: Jhernandez <[email protected]>
Gerrit-Reviewer: Sniedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to