Skip to content

Commit

Permalink
Migrate to *terser* dep
Browse files Browse the repository at this point in the history
* Move `console` output to dev only for experimental minification

Applies to OpenUserJS#432 OpenUserJS#249 OpenUserJS#430
  • Loading branch information
Martii committed Sep 24, 2018
1 parent bc9af7d commit 044a662
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 29 deletions.
16 changes: 6 additions & 10 deletions README.md
Expand Up @@ -79,8 +79,8 @@ Repository | Reference | Recent Version
[select2-bootstrap-css][select2-bootstrap-cssGHUrl] | [Documentation][select2-bootstrap-cssDOCUrl] | [![NPM version][select2-bootstrap-cssNPMVersionImage]][select2-bootstrap-cssNPMUrl]
[serve-favicon][serve-faviconGHUrl] | [Documentation][serve-faviconDOCUrl] | [![NPM version][serve-faviconNPMVersionImage]][serve-faviconNPMUrl]
[spdx-license-ids][spdx-license-idsGHUrl] | [Documentation][spdx-license-idsDOCUrl] | [![NPM version][spdx-license-idsNPMVersionImage]][spdx-license-idsNPMUrl]
[terser][terserGHUrl] | [Documentation][terserDOCUrl] | [![NPM version][terserNPMVersionImage]][terserNPMUrl]
[toobusy-js][toobusy-jsGHUrl] <br />&#x22D4; [`harmony`][toobusy-jsGHUrlHarmonyUrl] | [Documentation][toobusy-jsDOCUrl] | [![NPM version][toobusy-jsNPMVersionImage]][toobusy-jsNPMUrl]
[uglifyJS][uglifyJS2GHUrl] <br />&#x21B3; [`harmony`][uglifyJS2GHHarmonyUrl] | [Documentation][uglifyJS2DOCUrl] [&#x00b9;][uglifyJS2DOC1Url] | [![NPM version][uglifyJS2NPMVersionImage]][uglifyJS2NPMUrl] <br />&#x21B3; [![NPM Harmony version][uglifyJS2NPMHarmonyVersionImage]][uglifyJS2NPMHarmonyUrl]
[underscore][underscoreGHUrl] | [Documentation][underscoreDOCUrl] | [![NPM version][underscoreNPMVersionImage]][underscoreNPMUrl]
[useragent][useragentGHUrl] | [Documentation][useragentDOCUrl] | [![NPM version][useragentNPMVersionImage]][useragentNPMUrl]
[@octokit/rest ᶠᵏᵃ ᵍᶦᵗʰᵘᵇ][githubGHUrl] | [Documentation][githubDOCUrl] | [![NPM version][githubNPMVersionImage]][githubNPMUrl]
Expand Down Expand Up @@ -436,21 +436,17 @@ Outdated dependencies list can also be achieved with `$ npm --depth 0 outdated`
[spdx-license-idsNPMUrl]: https://www.npmjs.com/package/spdx-license-ids
[spdx-license-idsNPMVersionImage]: https://img.shields.io/npm/v/spdx-license-ids.svg?style=flat

[terserGHUrl]: https://github.com/fabiosantoscode/terser
[terserDOCUrl]: https://github.com/terser-js/terser/blob/master/README.md
[terserNPMUrl]: https://www.npmjs.com/package/terser
[terserNPMVersionImage]: https://img.shields.io/npm/v/terser.svg?style=flat

[toobusy-jsGHUrl]: https://github.com/STRML/node-toobusy
[toobusy-jsGHUrlHarmonyUrl]: https://github.com/OpenUserJs/node-toobusy/tree/harmony
[toobusy-jsDOCUrl]: https://github.com/STRML/node-toobusy/blob/master/README.md
[toobusy-jsNPMUrl]: https://npmjs.com/package/toobusy-js
[toobusy-jsNPMVersionImage]: https://img.shields.io/npm/v/toobusy-js.svg?style=flat

[uglifyJS2GHUrl]: https://github.com/mishoo/UglifyJS2
[uglifyJS2GHHarmonyUrl]: https://github.com/mishoo/UglifyJS2/tree/harmony
[uglifyJS2DOCUrl]: https://github.com/mishoo/UglifyJS2/blob/master/README.md
[uglifyJS2DOC1Url]: http://lisperator.net/uglifyjs/
[uglifyJS2NPMUrl]: https://www.npmjs.com/package/uglify-js
[uglifyJS2NPMHarmonyUrl]: https://www.npmjs.com/package/uglify-es
[uglifyJS2NPMVersionImage]: https://img.shields.io/npm/v/uglify-js.svg?style=flat
[uglifyJS2NPMHarmonyVersionImage]: https://img.shields.io/npm/v/uglify-es.svg?style=flat

[underscoreGHUrl]: https://github.com/jashkenas/underscore
[underscoreDOCUrl]: http://underscorejs.org/
[underscoreNPMUrl]: https://www.npmjs.com/package/underscore
Expand Down
6 changes: 3 additions & 3 deletions app.js
Expand Up @@ -28,7 +28,7 @@ var compression = require('compression');
var favicon = require('serve-favicon');

var minify = require('express-minify');
var uglifyjs = require('uglify-js');
var Terser = require('terser');

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

Expand Down Expand Up @@ -405,7 +405,7 @@ var minifyErrorHandler = function (aErr, aCallback) {
};

app.use(minify({
uglifyJsModule: uglifyjs,
uglifyJsModule: Terser,
cache: './dev/cache/express-minify/release',
onerror: minifyErrorHandler
}));
Expand All @@ -420,7 +420,7 @@ app.use(function(aReq, aRes, aNext) {
/^\/mod\/removed\//.test(pathname)
) {
aRes.minifyOptions = aRes.minifyOptions || {}; // Ensure object exists on response
aRes.minifyOptions.minify = false; // Skip using release minification because we control this with *uglify-es*
aRes.minifyOptions.minify = false; // Skip using release minification because we control this with *terser*
}
aNext();
});
Expand Down
30 changes: 16 additions & 14 deletions controllers/scriptStorage.js
Expand Up @@ -19,7 +19,7 @@ var stream = require('stream');
var peg = require('pegjs');
var AWS = require('aws-sdk');
var S3rver = require('s3rver');
var UglifyJS = require("uglify-es");
var Terser = require("terser");
var rfc2047 = require('rfc2047');
var mediaType = require('media-type');
var mediaDB = require('mime-db');
Expand Down Expand Up @@ -177,9 +177,9 @@ if (isPro) {
});
}

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

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

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

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

try {
result = UglifyJS.minify(source, {
result = Terser.minify(source, {
parse: {
bare_returns: true
},
Expand All @@ -868,7 +868,7 @@ exports.sendScript = function (aReq, aRes, aNext) {
if (result.error) {
throw result.error; // Passthrough the error if present to our handler
} else if(!result.code) {
throw new TypeError('UglifyJS error of `code` being absent');
throw new TypeError('Terser error of `code` being absent');
} else {
source = result.code;

Expand All @@ -878,13 +878,15 @@ exports.sendScript = function (aReq, aRes, aNext) {
' .min.user.js"';
}
} catch (aE) { // On any failure default to unminified
console.warn([
'MINIFICATION WARNING (harmony):',
' message: ' + aE.message,
' installName: ' + aScript.installName,
' line: ' + aE.line + ' col: ' + aE.col + ' pos: ' + aE.pos

].join('\n'));
if (isDev) {
console.warn([
'MINIFICATION WARNING (harmony):',
' message: ' + aE.message,
' installName: ' + aScript.installName,
' line: ' + aE.line + ' col: ' + aE.col + ' pos: ' + aE.pos

].join('\n'));
}

// Set up a `Warning` header with Q encoding under RFC2047
msg = [
Expand Down
3 changes: 1 addition & 2 deletions package.json
Expand Up @@ -63,9 +63,8 @@
"select2-bootstrap-css": "1.4.6",
"serve-favicon": "2.5.0",
"spdx-license-ids": "3.0.1",
"terser": "3.8.2",
"toobusy-js": "0.5.1",
"uglify-js": "3.3.9",
"uglify-es": "3.3.9",
"underscore": "1.9.1",
"useragent": "2.3.0"
},
Expand Down

0 comments on commit 044a662

Please sign in to comment.