- rename `screw_ie8` to `ie8` - rename `mangle.except` to `mangle.reserved` - rename `mangle.properties.ignore_quoted` to `mangle.properties.keep_quoted` - compact `sourceMap` options - more stringent verification on input `options` - toplevel shorthands - `ie8` - `keep_fnames` - `toplevel` - `warnings` - support arrays and unquoted string values on CLI - drop `fromString` from `minify()` - `minify()` no longer handles any `fs` operations - unify order of operations for `mangle_properties()` on CLI & API - `bin/uglifyjs` used to `mangle_properties()` before even `Compressor` - `minify()` used to `mangle_properties()` after `Compressor` but before `mangle_names()` - both will now do `Compressor`, `mangle_names()` then `mangle_properties()` - `options.parse` / `--parse` for parser options beyond `bare_returns` - add `mangle.properties.builtins` to disable built-in reserved list - disable with `--mangle-props builtins` on CLI - `warnings` now off by default - add `--warn` and `--verbose` on CLI - drop `--enclose` - drop `--export-all` - drop `--reserved-file` - use `--mangle reserved` instead - drop `--reserve-domprops` - enabled by default, disable with `--mangle-props domprops` - drop `--prefix` - use `--source-map base` instead - drop `--lint` - remove `bin/extract-props.js` - limit exposure of internal APIs - update documentations closes #96 closes #102 closes #136 closes #166 closes #243 closes #254 closes #261 closes #311 closes #700 closes #748 closes #912 closes #1072 closes #1366 fixes #101 fixes #123 fixes #124 fixes #263 fixes #379 fixes #419 fixes #423 fixes #461 fixes #465 fixes #576 fixes #737 fixes #772 fixes #958 fixes #1036 fixes #1142 fixes #1175 fixes #1220 fixes #1223 fixes #1280 fixes #1359 fixes #1368
90 lines
4.4 KiB
JavaScript
90 lines
4.4 KiB
JavaScript
var UglifyJS = require('../../');
|
|
var assert = require("assert");
|
|
|
|
describe("comment filters", function() {
|
|
it("Should be able to filter comments by passing regexp", function() {
|
|
var ast = UglifyJS.parse("/*!test1*/\n/*test2*/\n//!test3\n//test4\n<!--test5\n<!--!test6\n-->test7\n-->!test8");
|
|
assert.strictEqual(ast.print_to_string({comments: /^!/}), "/*!test1*/\n//!test3\n//!test6\n//!test8\n");
|
|
});
|
|
|
|
it("Should be able to filter comments with the 'all' option", function() {
|
|
var ast = UglifyJS.parse("/*!test1*/\n/*test2*/\n//!test3\n//test4\n<!--test5\n<!--!test6\n-->test7\n-->!test8");
|
|
assert.strictEqual(ast.print_to_string({comments: "all"}), "/*!test1*/\n/*test2*/\n//!test3\n//test4\n//test5\n//!test6\n//test7\n//!test8\n");
|
|
});
|
|
|
|
it("Should be able to filter commments with the 'some' option", function() {
|
|
var ast = UglifyJS.parse("// foo\n/*@preserve*/\n// bar\n/*@license*/\n//@license with the wrong comment type\n/*@cc_on something*/");
|
|
assert.strictEqual(ast.print_to_string({comments: "some"}), "/*@preserve*/\n/*@license*/\n/*@cc_on something*/\n");
|
|
});
|
|
|
|
it("Should be able to filter comments by passing a function", function() {
|
|
var ast = UglifyJS.parse("/*TEST 123*/\n//An other comment\n//8 chars.");
|
|
var f = function(node, comment) {
|
|
return comment.value.length === 8;
|
|
};
|
|
|
|
assert.strictEqual(ast.print_to_string({comments: f}), "/*TEST 123*/\n//8 chars.\n");
|
|
});
|
|
|
|
it("Should be able to filter comments by passing regex in string format", function() {
|
|
var ast = UglifyJS.parse("/*!test1*/\n/*test2*/\n//!test3\n//test4\n<!--test5\n<!--!test6\n-->test7\n-->!test8");
|
|
assert.strictEqual(ast.print_to_string({comments: "/^!/"}), "/*!test1*/\n//!test3\n//!test6\n//!test8\n");
|
|
});
|
|
|
|
it("Should be able to get the comment and comment type when using a function", function() {
|
|
var ast = UglifyJS.parse("/*!test1*/\n/*test2*/\n//!test3\n//test4\n<!--test5\n<!--!test6\n-->test7\n-->!test8");
|
|
var f = function(node, comment) {
|
|
return comment.type == "comment1" || comment.type == "comment3";
|
|
};
|
|
|
|
assert.strictEqual(ast.print_to_string({comments: f}), "//!test3\n//test4\n//test5\n//!test6\n");
|
|
});
|
|
|
|
it("Should be able to filter comments by passing a boolean", function() {
|
|
var ast = UglifyJS.parse("/*!test1*/\n/*test2*/\n//!test3\n//test4\n<!--test5\n<!--!test6\n-->test7\n-->!test8");
|
|
|
|
assert.strictEqual(ast.print_to_string({comments: true}), "/*!test1*/\n/*test2*/\n//!test3\n//test4\n//test5\n//!test6\n//test7\n//!test8\n");
|
|
assert.strictEqual(ast.print_to_string({comments: false}), "");
|
|
});
|
|
|
|
it("Should never be able to filter comment5 (shebangs)", function() {
|
|
var ast = UglifyJS.parse("#!Random comment\n//test1\n/*test2*/");
|
|
var f = function(node, comment) {
|
|
assert.strictEqual(comment.type === "comment5", false);
|
|
|
|
return true;
|
|
};
|
|
|
|
assert.strictEqual(ast.print_to_string({comments: f}), "#!Random comment\n//test1\n/*test2*/\n");
|
|
});
|
|
|
|
it("Should never be able to filter comment5 when using 'some' as filter", function() {
|
|
var ast = UglifyJS.parse("#!foo\n//foo\n/*@preserve*/\n/* please hide me */");
|
|
assert.strictEqual(ast.print_to_string({comments: "some"}), "#!foo\n/*@preserve*/\n");
|
|
});
|
|
|
|
it("Should have no problem on multiple calls", function() {
|
|
const options = {
|
|
comments: /ok/
|
|
};
|
|
|
|
assert.strictEqual(UglifyJS.parse("/* ok */ function a(){}").print_to_string(options), "/* ok */function a(){}");
|
|
assert.strictEqual(UglifyJS.parse("/* ok */ function a(){}").print_to_string(options), "/* ok */function a(){}");
|
|
assert.strictEqual(UglifyJS.parse("/* ok */ function a(){}").print_to_string(options), "/* ok */function a(){}");
|
|
});
|
|
|
|
it("Should handle shebang and preamble correctly", function() {
|
|
var code = UglifyJS.minify("#!/usr/bin/node\nvar x = 10;", {
|
|
output: { preamble: "/* Build */" }
|
|
}).code;
|
|
assert.strictEqual(code, "#!/usr/bin/node\n/* Build */\nvar x=10;");
|
|
});
|
|
|
|
it("Should handle preamble without shebang correctly", function() {
|
|
var code = UglifyJS.minify("var x = 10;", {
|
|
output: { preamble: "/* Build */" }
|
|
}).code;
|
|
assert.strictEqual(code, "/* Build */\nvar x=10;");
|
|
});
|
|
});
|