Skip to content

Commit

Permalink
Fix: Support booleans in minify options (#858)
Browse files Browse the repository at this point in the history
* Add fixture

* Prevent boolean minify options from being replaced

* Update snapshots

* Add changeset
  • Loading branch information
marcbouchenoire authored Jun 28, 2021
1 parent 8108800 commit b1a6374
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/rude-books-judge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'microbundle': patch
---

- Allow the minify options `compress` and `mangle` to be set as booleans
9 changes: 7 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,9 @@ function createConfig(options, entry, format, writeMeta) {
// unsafe_arrows: true,
passes: 10,
},
minifyOptions.compress || {},
typeof minifyOptions.compress === 'boolean'
? minifyOptions.compress
: minifyOptions.compress || {},
),
format: {
// By default, Terser wraps function arguments in extra parens to trigger eager parsing.
Expand All @@ -593,7 +595,10 @@ function createConfig(options, entry, format, writeMeta) {
module: modern,
ecma: modern ? 2017 : 5,
toplevel: modern || format === 'cjs' || format === 'es',
mangle: Object.assign({}, minifyOptions.mangle || {}),
mangle:
typeof minifyOptions.mangle === 'boolean'
? minifyOptions.mangle
: Object.assign({}, minifyOptions.mangle || {}),
nameCache,
}),
nameCache && {
Expand Down
3 changes: 3 additions & 0 deletions src/lib/terser.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
// Normalize Terser options from microbundle's relaxed JSON format (mutates argument in-place)
export function normalizeMinifyOptions(minifyOptions) {
// ignore normalization if "mangle" is a boolean:
if (typeof minifyOptions.mangle === 'boolean') return;

const mangle = minifyOptions.mangle || (minifyOptions.mangle = {});
let properties = mangle.properties;

Expand Down
48 changes: 48 additions & 0 deletions test/__snapshots__/index.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1915,6 +1915,54 @@ exports[`fixtures build minify-config with microbundle 5`] = `
"
`;
exports[`fixtures build minify-config-boolean with microbundle 1`] = `
"Used script: microbundle
Directory tree:
minify-config-boolean
dist
minify-config-boolean.esm.js
minify-config-boolean.esm.js.map
minify-config-boolean.js
minify-config-boolean.js.map
minify-config-boolean.umd.js
minify-config-boolean.umd.js.map
package.json
src
index.js
two.js
Build \\"minifyConfigBoolean\\" to dist:
107 B: minify-config-boolean.js.gz
84 B: minify-config-boolean.js.br
114 B: minify-config-boolean.esm.js.gz
90 B: minify-config-boolean.esm.js.br
216 B: minify-config-boolean.umd.js.gz
159 B: minify-config-boolean.umd.js.br"
`;
exports[`fixtures build minify-config-boolean with microbundle 2`] = `6`;
exports[`fixtures build minify-config-boolean with microbundle 3`] = `
"var two={prop1:1,_prop2:2};function index(){return console.log(two.prop1),console.log(two._prop2),two}export default index;
//# sourceMappingURL=minify-config-boolean.esm.js.map
"
`;
exports[`fixtures build minify-config-boolean with microbundle 4`] = `
"var two={prop1:1,_prop2:2};module.exports=function(){return console.log(two.prop1),console.log(two._prop2),two};
//# sourceMappingURL=minify-config-boolean.js.map
"
`;
exports[`fixtures build minify-config-boolean with microbundle 5`] = `
"!function(global,factory){\\"object\\"==typeof exports&&\\"undefined\\"!=typeof module?module.exports=factory():\\"function\\"==typeof define&&define.amd?define(factory):(global||self).minifyConfigBoolean=factory()}(this,function(){var two={prop1:1,_prop2:2};return function(){return console.log(two.prop1),console.log(two._prop2),two}});
//# sourceMappingURL=minify-config-boolean.umd.js.map
"
`;
exports[`fixtures build minify-path-config with microbundle 1`] = `
"Used script: microbundle
Expand Down
7 changes: 7 additions & 0 deletions test/fixtures/minify-config-boolean/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "minify-config-boolean",
"minify": {
"compress": true,
"mangle": false
}
}
7 changes: 7 additions & 0 deletions test/fixtures/minify-config-boolean/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { two } from './two';

export default function () {
console.log(two.prop1);
console.log(two._prop2);
return two;
}
4 changes: 4 additions & 0 deletions test/fixtures/minify-config-boolean/src/two.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export const two = {
prop1: 1,
_prop2: 2,
};

0 comments on commit b1a6374

Please sign in to comment.