Skip to content

Commit 4f1022c

Browse files
authored
Migrate to *terser* dep (#1524)
* Move `console` output to dev only for experimental minification Applies to #432 #249 #430 Auto-merge
1 parent bc9af7d commit 4f1022c

File tree

4 files changed

+26
-29
lines changed

4 files changed

+26
-29
lines changed

README.md

+6-10
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ Repository | Reference | Recent Version
7979
[select2-bootstrap-css][select2-bootstrap-cssGHUrl] | [Documentation][select2-bootstrap-cssDOCUrl] | [![NPM version][select2-bootstrap-cssNPMVersionImage]][select2-bootstrap-cssNPMUrl]
8080
[serve-favicon][serve-faviconGHUrl] | [Documentation][serve-faviconDOCUrl] | [![NPM version][serve-faviconNPMVersionImage]][serve-faviconNPMUrl]
8181
[spdx-license-ids][spdx-license-idsGHUrl] | [Documentation][spdx-license-idsDOCUrl] | [![NPM version][spdx-license-idsNPMVersionImage]][spdx-license-idsNPMUrl]
82+
[terser][terserGHUrl] | [Documentation][terserDOCUrl] | [![NPM version][terserNPMVersionImage]][terserNPMUrl]
8283
[toobusy-js][toobusy-jsGHUrl] <br />&#x22D4; [`harmony`][toobusy-jsGHUrlHarmonyUrl] | [Documentation][toobusy-jsDOCUrl] | [![NPM version][toobusy-jsNPMVersionImage]][toobusy-jsNPMUrl]
83-
[uglifyJS][uglifyJS2GHUrl] <br />&#x21B3; [`harmony`][uglifyJS2GHHarmonyUrl] | [Documentation][uglifyJS2DOCUrl] [&#x00b9;][uglifyJS2DOC1Url] | [![NPM version][uglifyJS2NPMVersionImage]][uglifyJS2NPMUrl] <br />&#x21B3; [![NPM Harmony version][uglifyJS2NPMHarmonyVersionImage]][uglifyJS2NPMHarmonyUrl]
8484
[underscore][underscoreGHUrl] | [Documentation][underscoreDOCUrl] | [![NPM version][underscoreNPMVersionImage]][underscoreNPMUrl]
8585
[useragent][useragentGHUrl] | [Documentation][useragentDOCUrl] | [![NPM version][useragentNPMVersionImage]][useragentNPMUrl]
8686
[@octokit/rest ᶠᵏᵃ ᵍᶦᵗʰᵘᵇ][githubGHUrl] | [Documentation][githubDOCUrl] | [![NPM version][githubNPMVersionImage]][githubNPMUrl]
@@ -436,21 +436,17 @@ Outdated dependencies list can also be achieved with `$ npm --depth 0 outdated`
436436
[spdx-license-idsNPMUrl]: https://www.npmjs.com/package/spdx-license-ids
437437
[spdx-license-idsNPMVersionImage]: https://img.shields.io/npm/v/spdx-license-ids.svg?style=flat
438438

439+
[terserGHUrl]: https://github.com/fabiosantoscode/terser
440+
[terserDOCUrl]: https://github.com/terser-js/terser/blob/master/README.md
441+
[terserNPMUrl]: https://www.npmjs.com/package/terser
442+
[terserNPMVersionImage]: https://img.shields.io/npm/v/terser.svg?style=flat
443+
439444
[toobusy-jsGHUrl]: https://github.com/STRML/node-toobusy
440445
[toobusy-jsGHUrlHarmonyUrl]: https://github.com/OpenUserJs/node-toobusy/tree/harmony
441446
[toobusy-jsDOCUrl]: https://github.com/STRML/node-toobusy/blob/master/README.md
442447
[toobusy-jsNPMUrl]: https://npmjs.com/package/toobusy-js
443448
[toobusy-jsNPMVersionImage]: https://img.shields.io/npm/v/toobusy-js.svg?style=flat
444449

445-
[uglifyJS2GHUrl]: https://github.com/mishoo/UglifyJS2
446-
[uglifyJS2GHHarmonyUrl]: https://github.com/mishoo/UglifyJS2/tree/harmony
447-
[uglifyJS2DOCUrl]: https://github.com/mishoo/UglifyJS2/blob/master/README.md
448-
[uglifyJS2DOC1Url]: http://lisperator.net/uglifyjs/
449-
[uglifyJS2NPMUrl]: https://www.npmjs.com/package/uglify-js
450-
[uglifyJS2NPMHarmonyUrl]: https://www.npmjs.com/package/uglify-es
451-
[uglifyJS2NPMVersionImage]: https://img.shields.io/npm/v/uglify-js.svg?style=flat
452-
[uglifyJS2NPMHarmonyVersionImage]: https://img.shields.io/npm/v/uglify-es.svg?style=flat
453-
454450
[underscoreGHUrl]: https://github.com/jashkenas/underscore
455451
[underscoreDOCUrl]: http://underscorejs.org/
456452
[underscoreNPMUrl]: https://www.npmjs.com/package/underscore

app.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var compression = require('compression');
2828
var favicon = require('serve-favicon');
2929

3030
var minify = require('express-minify');
31-
var uglifyjs = require('uglify-js');
31+
var Terser = require('terser');
3232

3333
var lessMiddleware = require('less-middleware');
3434

@@ -405,7 +405,7 @@ var minifyErrorHandler = function (aErr, aCallback) {
405405
};
406406

407407
app.use(minify({
408-
uglifyJsModule: uglifyjs,
408+
uglifyJsModule: Terser,
409409
cache: './dev/cache/express-minify/release',
410410
onerror: minifyErrorHandler
411411
}));
@@ -420,7 +420,7 @@ app.use(function(aReq, aRes, aNext) {
420420
/^\/mod\/removed\//.test(pathname)
421421
) {
422422
aRes.minifyOptions = aRes.minifyOptions || {}; // Ensure object exists on response
423-
aRes.minifyOptions.minify = false; // Skip using release minification because we control this with *uglify-es*
423+
aRes.minifyOptions.minify = false; // Skip using release minification because we control this with *terser*
424424
}
425425
aNext();
426426
});

controllers/scriptStorage.js

+16-14
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var stream = require('stream');
1919
var peg = require('pegjs');
2020
var AWS = require('aws-sdk');
2121
var S3rver = require('s3rver');
22-
var UglifyJS = require("uglify-es");
22+
var Terser = require("terser");
2323
var rfc2047 = require('rfc2047');
2424
var mediaType = require('media-type');
2525
var mediaDB = require('mime-db');
@@ -177,9 +177,9 @@ if (isPro) {
177177
});
178178
}
179179

180-
// Get UglifyJS harmony installation datestamp once
181-
var stats = fs.statSync('./node_modules/uglify-es/package.json');
182-
var mtimeUglifyJS = new Date(util.inspect(stats.mtime));
180+
// Get Terser installation datestamp once
181+
var stats = fs.statSync('./node_modules/terser/package.json');
182+
var mtimeTerser = new Date(util.inspect(stats.mtime));
183183

184184
// Brute initialization
185185
var store = null;
@@ -805,7 +805,7 @@ exports.sendScript = function (aReq, aRes, aNext) {
805805

806806
} else { // Wants to try minified
807807
//
808-
lastModified = moment(mtimeUglifyJS > aScript.updated ? mtimeUglifyJS : aScript.updated)
808+
lastModified = moment(mtimeTerser > aScript.updated ? mtimeTerser : aScript.updated)
809809
.utc().format('ddd, DD MMM YYYY HH:mm:ss') + ' GMT';
810810

811811
// If already client-side... partial HTTP/1.1 Caching
@@ -851,7 +851,7 @@ exports.sendScript = function (aReq, aRes, aNext) {
851851
msg = null;
852852

853853
try {
854-
result = UglifyJS.minify(source, {
854+
result = Terser.minify(source, {
855855
parse: {
856856
bare_returns: true
857857
},
@@ -868,7 +868,7 @@ exports.sendScript = function (aReq, aRes, aNext) {
868868
if (result.error) {
869869
throw result.error; // Passthrough the error if present to our handler
870870
} else if(!result.code) {
871-
throw new TypeError('UglifyJS error of `code` being absent');
871+
throw new TypeError('Terser error of `code` being absent');
872872
} else {
873873
source = result.code;
874874

@@ -878,13 +878,15 @@ exports.sendScript = function (aReq, aRes, aNext) {
878878
' .min.user.js"';
879879
}
880880
} catch (aE) { // On any failure default to unminified
881-
console.warn([
882-
'MINIFICATION WARNING (harmony):',
883-
' message: ' + aE.message,
884-
' installName: ' + aScript.installName,
885-
' line: ' + aE.line + ' col: ' + aE.col + ' pos: ' + aE.pos
886-
887-
].join('\n'));
881+
if (isDev) {
882+
console.warn([
883+
'MINIFICATION WARNING (harmony):',
884+
' message: ' + aE.message,
885+
' installName: ' + aScript.installName,
886+
' line: ' + aE.line + ' col: ' + aE.col + ' pos: ' + aE.pos
887+
888+
].join('\n'));
889+
}
888890

889891
// Set up a `Warning` header with Q encoding under RFC2047
890892
msg = [

package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,8 @@
6363
"select2-bootstrap-css": "1.4.6",
6464
"serve-favicon": "2.5.0",
6565
"spdx-license-ids": "3.0.1",
66+
"terser": "3.8.2",
6667
"toobusy-js": "0.5.1",
67-
"uglify-js": "3.3.9",
68-
"uglify-es": "3.3.9",
6968
"underscore": "1.9.1",
7069
"useragent": "2.3.0"
7170
},

0 commit comments

Comments
 (0)