diff --git a/.changeset/rude-books-judge.md b/.changeset/rude-books-judge.md new file mode 100644 index 00000000..1737bcfb --- /dev/null +++ b/.changeset/rude-books-judge.md @@ -0,0 +1,5 @@ +--- +'microbundle': patch +--- + +- Allow the minify options `compress` and `mangle` to be set as booleans diff --git a/src/index.js b/src/index.js index 6793c3e8..47448a08 100644 --- a/src/index.js +++ b/src/index.js @@ -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. @@ -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 && { diff --git a/src/lib/terser.js b/src/lib/terser.js index d1d2e28a..956e459c 100644 --- a/src/lib/terser.js +++ b/src/lib/terser.js @@ -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; diff --git a/test/__snapshots__/index.test.js.snap b/test/__snapshots__/index.test.js.snap index 0fd65c58..e70c9176 100644 --- a/test/__snapshots__/index.test.js.snap +++ b/test/__snapshots__/index.test.js.snap @@ -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 diff --git a/test/fixtures/minify-config-boolean/package.json b/test/fixtures/minify-config-boolean/package.json new file mode 100644 index 00000000..e2513d63 --- /dev/null +++ b/test/fixtures/minify-config-boolean/package.json @@ -0,0 +1,7 @@ +{ + "name": "minify-config-boolean", + "minify": { + "compress": true, + "mangle": false + } +} diff --git a/test/fixtures/minify-config-boolean/src/index.js b/test/fixtures/minify-config-boolean/src/index.js new file mode 100644 index 00000000..cca8c9ac --- /dev/null +++ b/test/fixtures/minify-config-boolean/src/index.js @@ -0,0 +1,7 @@ +import { two } from './two'; + +export default function () { + console.log(two.prop1); + console.log(two._prop2); + return two; +} diff --git a/test/fixtures/minify-config-boolean/src/two.js b/test/fixtures/minify-config-boolean/src/two.js new file mode 100644 index 00000000..9dc4e379 --- /dev/null +++ b/test/fixtures/minify-config-boolean/src/two.js @@ -0,0 +1,4 @@ +export const two = { + prop1: 1, + _prop2: 2, +};