Update to Terser 5 (#16194)

Co-authored-by: Tim Neutkens <timneutkens@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Sergey Rubanov 2020-08-16 20:32:37 +03:00 committed by GitHub
parent aec37fa8f1
commit feeb941dc6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 33 additions and 49 deletions

File diff suppressed because one or more lines are too long

View file

@ -6,7 +6,6 @@ const {
const buildTerserOptions = ({
ecma,
warnings,
parse = {},
compress = {},
mangle,
@ -43,8 +42,7 @@ const buildTerserOptions = ({
module,
nameCache,
safari10,
toplevel,
warnings
toplevel
});
function isObject(value) {
@ -133,9 +131,9 @@ const buildComments = (options, terserOptions, extractedComments) => {
};
};
const minify = options => {
async function minify(options) {
const {
file,
name,
input,
inputSourceMap,
minify: minifyFn
@ -143,7 +141,7 @@ const minify = options => {
if (minifyFn) {
return minifyFn({
[file]: input
[name]: input
}, inputSourceMap);
} // Copy terser options
@ -158,35 +156,20 @@ const minify = options => {
const extractedComments = [];
terserOptions.output.comments = buildComments(options, terserOptions, extractedComments);
const {
error,
map,
code,
warnings
} = terserMinify({
[file]: input
const result = await terserMinify({
[name]: input
}, terserOptions);
return {
error,
map,
code,
warnings,
return { ...result,
extractedComments
};
};
}
function transform(options) {
// 'use strict' => this === undefined (Clean Scope)
// Safer for possible security issues, albeit not critical at all here
// eslint-disable-next-line no-new-func, no-param-reassign
options = new Function('exports', 'require', 'module', '__filename', '__dirname', `'use strict'\nreturn ${options}`)(exports, require, module, __filename, __dirname);
const result = minify(options);
if (result.error) {
throw result.error;
} else {
return result;
}
return minify(options);
}
module.exports.minify = minify;

File diff suppressed because one or more lines are too long

View file

@ -211,8 +211,8 @@
"string-hash": "1.1.3",
"strip-ansi": "6.0.0",
"taskr": "1.1.0",
"terser": "4.4.2",
"terser-webpack-plugin": "3.0.8",
"terser": "5.1.0",
"terser-webpack-plugin": "4.1.0",
"text-table": "0.2.0",
"thread-loader": "2.1.3",
"typescript": "3.8.3",

View file

@ -80,7 +80,7 @@ describe('Production response size', () => {
)
// These numbers are without gzip compression!
const delta = responseSizesBytes - 277 * 1024
const delta = responseSizesBytes - 276 * 1024
expect(delta).toBeLessThanOrEqual(1024) // don't increase size more than 1kb
expect(delta).toBeGreaterThanOrEqual(-1024) // don't decrease size more than 1kb without updating target
})
@ -100,7 +100,7 @@ describe('Production response size', () => {
)
// These numbers are without gzip compression!
const delta = responseSizesBytes - 167 * 1024
const delta = responseSizesBytes - 166 * 1024
expect(delta).toBeLessThanOrEqual(1024) // don't increase size more than 1kb
expect(delta).toBeGreaterThanOrEqual(-1024) // don't decrease size more than 1kb without updating target
})

View file

@ -10351,10 +10351,10 @@ jest-worker@^26.0.0:
merge-stream "^2.0.0"
supports-color "^7.0.0"
jest-worker@^26.1.0:
version "26.2.1"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.2.1.tgz#5d630ab93f666b53f911615bc13e662b382bd513"
integrity sha512-+XcGMMJDTeEGncRb5M5Zq9P7K4sQ1sirhjdOxsN1462h6lFo9w59bl2LVQmdGEEeU3m+maZCkS2Tcc9SfCHO4A==
jest-worker@^26.3.0:
version "26.3.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f"
integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
@ -16400,19 +16400,19 @@ temp@^0.8.1:
dependencies:
rimraf "~2.6.2"
terser-webpack-plugin@3.0.8:
version "3.0.8"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.8.tgz#d1a53442a143e09e00c880e8d77c1e79cb05318b"
integrity sha512-ygwK8TYMRTYtSyLB2Mhnt90guQh989CIq/mL/2apwi6rA15Xys4ydNUiH4ah6EZCfQxSk26ZFQilZ4IQ6IZw6A==
terser-webpack-plugin@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz#6e9d6ae4e1a900d88ddce8da6a47507ea61f44bc"
integrity sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA==
dependencies:
cacache "^15.0.5"
find-cache-dir "^3.3.1"
jest-worker "^26.1.0"
jest-worker "^26.3.0"
p-limit "^3.0.2"
schema-utils "^2.6.6"
serialize-javascript "^4.0.0"
source-map "^0.6.1"
terser "^4.8.0"
terser "^5.0.0"
webpack-sources "^1.4.3"
terser-webpack-plugin@^1.4.3:
@ -16430,18 +16430,19 @@ terser-webpack-plugin@^1.4.3:
webpack-sources "^1.4.0"
worker-farm "^1.7.0"
terser@4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.2.tgz#448fffad0245f4c8a277ce89788b458bfd7706e8"
terser@4.8.0, terser@^4.1.2:
version "4.8.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
source-map-support "~0.5.12"
terser@4.8.0, terser@^4.1.2, terser@^4.8.0:
version "4.8.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
terser@5.1.0, terser@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.1.0.tgz#1f4ab81c8619654fdded51f3157b001e1747281d"
integrity sha512-pwC1Jbzahz1ZPU87NQ8B3g5pKbhyJSiHih4gLH6WZiPU8mmS1IlGbB0A2Nuvkj/LCNsgIKctg6GkYwWCeTvXZQ==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"