Skip to content

Commit 907fedc

Browse files
filipesilvavikerman
authored andcommitted
feat(@angular-devkit/build-angular): use terser instead of uglify-es (#11996)
Should help bring down prod build times, @SanderElias reported a ~60% reduction on his project. Should fix #9340.
1 parent c66f831 commit 907fedc

File tree

3 files changed

+110
-7
lines changed

3 files changed

+110
-7
lines changed

packages/angular_devkit/build_angular/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"stylus": "^0.54.5",
4747
"stylus-loader": "^3.0.2",
4848
"tree-kill": "^1.2.0",
49-
"uglifyjs-webpack-plugin": "^1.2.5",
49+
"terser-webpack-plugin": "^1.0.2",
5050
"url-loader": "^1.0.1",
5151
"webpack": "^4.15.1",
5252
"webpack-dev-middleware": "^3.1.3",

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { normalizeExtraEntryPoints } from './utils';
2424

2525
const ProgressPlugin = require('webpack/lib/ProgressPlugin');
2626
const CircularDependencyPlugin = require('circular-dependency-plugin');
27-
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
27+
const TerserPlugin = require('terser-webpack-plugin');
2828
const StatsPlugin = require('stats-webpack-plugin');
2929

3030
/**
@@ -208,7 +208,7 @@ export function getCommonConfig(wco: WebpackConfigOptions) {
208208
const isIvyEnabled = wco.tsConfig.raw.angularCompilerOptions
209209
&& wco.tsConfig.raw.angularCompilerOptions.enableIvy;
210210

211-
const uglifyOptions = {
211+
const terserOptions = {
212212
ecma: wco.supportES2015 ? 6 : 5,
213213
warnings: !!buildOptions.verbose,
214214
safari10: true,
@@ -318,11 +318,11 @@ export function getCommonConfig(wco: WebpackConfigOptions) {
318318
// component styles retain their original file name
319319
test: (file) => /\.(?:css|scss|sass|less|styl)$/.test(file),
320320
}),
321-
new UglifyJSPlugin({
321+
new TerserPlugin({
322322
sourceMap: buildOptions.sourceMap,
323323
parallel: true,
324324
cache: true,
325-
uglifyOptions,
325+
terserOptions,
326326
}),
327327
],
328328
},

yarn.lock

+105-2
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,10 @@ agent-base@^4.1.0:
500500
dependencies:
501501
es6-promisify "^5.0.0"
502502

503+
ajv-errors@^1.0.0:
504+
version "1.0.0"
505+
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59"
506+
503507
ajv-keywords@^3.1.0:
504508
version "3.2.0"
505509
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
@@ -1187,6 +1191,25 @@ cacache@^10.0.4:
11871191
unique-filename "^1.1.0"
11881192
y18n "^4.0.0"
11891193

1194+
cacache@^11.0.2:
1195+
version "11.2.0"
1196+
resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965"
1197+
dependencies:
1198+
bluebird "^3.5.1"
1199+
chownr "^1.0.1"
1200+
figgy-pudding "^3.1.0"
1201+
glob "^7.1.2"
1202+
graceful-fs "^4.1.11"
1203+
lru-cache "^4.1.3"
1204+
mississippi "^3.0.0"
1205+
mkdirp "^0.5.1"
1206+
move-concurrently "^1.0.1"
1207+
promise-inflight "^1.0.1"
1208+
rimraf "^2.6.2"
1209+
ssri "^6.0.0"
1210+
unique-filename "^1.1.0"
1211+
y18n "^4.0.0"
1212+
11901213
cache-base@^1.0.1:
11911214
version "1.0.1"
11921215
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -2697,6 +2720,10 @@ fecha@^2.3.3:
26972720
version "2.3.3"
26982721
resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd"
26992722

2723+
figgy-pudding@^3.1.0:
2724+
version "3.4.1"
2725+
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.4.1.tgz#af66da1991fa2f94ff7f33b545a38ea4b3869696"
2726+
27002727
file-loader@^1.1.11:
27012728
version "1.1.11"
27022729
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8"
@@ -2766,6 +2793,14 @@ find-cache-dir@^1.0.0:
27662793
make-dir "^1.0.0"
27672794
pkg-dir "^2.0.0"
27682795

2796+
find-cache-dir@^2.0.0:
2797+
version "2.0.0"
2798+
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d"
2799+
dependencies:
2800+
commondir "^1.0.1"
2801+
make-dir "^1.0.0"
2802+
pkg-dir "^3.0.0"
2803+
27692804
find-parent-dir@^0.3.0:
27702805
version "0.3.0"
27712806
resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
@@ -4454,7 +4489,7 @@ lru-cache@2.2.x:
44544489
version "2.2.4"
44554490
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
44564491

4457-
lru-cache@^4.0.1, lru-cache@^4.1.1:
4492+
lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.3:
44584493
version "4.1.3"
44594494
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
44604495
dependencies:
@@ -4710,6 +4745,21 @@ mississippi@^2.0.0:
47104745
stream-each "^1.1.0"
47114746
through2 "^2.0.0"
47124747

4748+
mississippi@^3.0.0:
4749+
version "3.0.0"
4750+
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
4751+
dependencies:
4752+
concat-stream "^1.5.0"
4753+
duplexify "^3.4.2"
4754+
end-of-stream "^1.1.0"
4755+
flush-write-stream "^1.0.0"
4756+
from2 "^2.1.0"
4757+
parallel-transform "^1.1.0"
4758+
pump "^3.0.0"
4759+
pumpify "^1.3.3"
4760+
stream-each "^1.1.0"
4761+
through2 "^2.0.0"
4762+
47134763
mixin-deep@^1.2.0:
47144764
version "1.3.1"
47154765
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
@@ -5441,6 +5491,12 @@ pkg-dir@^2.0.0:
54415491
dependencies:
54425492
find-up "^2.1.0"
54435493

5494+
pkg-dir@^3.0.0:
5495+
version "3.0.0"
5496+
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
5497+
dependencies:
5498+
find-up "^3.0.0"
5499+
54445500
popper.js@^1.14.1:
54455501
version "1.14.4"
54465502
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.4.tgz#8eec1d8ff02a5a3a152dd43414a15c7b79fd69b6"
@@ -5635,6 +5691,13 @@ pump@^2.0.0, pump@^2.0.1:
56355691
end-of-stream "^1.1.0"
56365692
once "^1.3.1"
56375693

5694+
pump@^3.0.0:
5695+
version "3.0.0"
5696+
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
5697+
dependencies:
5698+
end-of-stream "^1.1.0"
5699+
once "^1.3.1"
5700+
56385701
pumpify@^1.3.3:
56395702
version "1.5.1"
56405703
resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
@@ -6195,6 +6258,14 @@ schema-utils@^0.4.0, schema-utils@^0.4.3, schema-utils@^0.4.4, schema-utils@^0.4
61956258
ajv "^6.1.0"
61966259
ajv-keywords "^3.1.0"
61976260

6261+
schema-utils@^1.0.0:
6262+
version "1.0.0"
6263+
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
6264+
dependencies:
6265+
ajv "^6.1.0"
6266+
ajv-errors "^1.0.0"
6267+
ajv-keywords "^3.1.0"
6268+
61986269
scss-tokenizer@^0.2.3:
61996270
version "0.2.3"
62006271
resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1"
@@ -6503,6 +6574,13 @@ source-map-support@~0.4.0:
65036574
dependencies:
65046575
source-map "^0.5.6"
65056576

6577+
source-map-support@~0.5.6:
6578+
version "0.5.9"
6579+
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
6580+
dependencies:
6581+
buffer-from "^1.0.0"
6582+
source-map "^0.6.0"
6583+
65066584
source-map-url@^0.4.0:
65076585
version "0.4.0"
65086586
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
@@ -6660,6 +6738,10 @@ ssri@^5.2.4:
66606738
dependencies:
66616739
safe-buffer "^5.1.1"
66626740

6741+
ssri@^6.0.0:
6742+
version "6.0.0"
6743+
resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.0.tgz#fc21bfc90e03275ac3e23d5a42e38b8a1cbc130d"
6744+
66636745
stack-trace@0.0.x:
66646746
version "0.0.10"
66656747
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
@@ -6884,6 +6966,27 @@ term-size@^1.2.0:
68846966
dependencies:
68856967
execa "^0.7.0"
68866968

6969+
terser-webpack-plugin@^1.0.2:
6970+
version "1.0.2"
6971+
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.0.2.tgz#b62dfdc4e59b0b5093665a765b234645b598d1a5"
6972+
dependencies:
6973+
cacache "^11.0.2"
6974+
find-cache-dir "^2.0.0"
6975+
schema-utils "^1.0.0"
6976+
serialize-javascript "^1.4.0"
6977+
source-map "^0.6.1"
6978+
terser "^3.8.1"
6979+
webpack-sources "^1.1.0"
6980+
worker-farm "^1.5.2"
6981+
6982+
terser@^3.8.1:
6983+
version "3.8.1"
6984+
resolved "https://registry.yarnpkg.com/terser/-/terser-3.8.1.tgz#cb70070ac9e0a71add169dfb63c0a64fca2738ac"
6985+
dependencies:
6986+
commander "~2.16.0"
6987+
source-map "~0.6.1"
6988+
source-map-support "~0.5.6"
6989+
68876990
text-extensions@^1.0.0:
68886991
version "1.7.0"
68896992
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39"
@@ -7143,7 +7246,7 @@ uglify-to-browserify@~1.0.0:
71437246
version "1.0.2"
71447247
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
71457248

7146-
uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5:
7249+
uglifyjs-webpack-plugin@^1.2.4:
71477250
version "1.2.7"
71487251
resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00"
71497252
dependencies:

0 commit comments

Comments
 (0)