const shouldMangleAndTranspile = (process.argv.length >= 3 && process.argv[2] === "1"); // const shouldMangleAndTranspile = (process.argv.length >= 3 && process.argv[2] === "1"); || true; const rollup = require('rollup'); const fs = require('fs'); var uglifyJs = null; var babel = null; if (shouldMangleAndTranspile) { uglifyJs = require('uglify-es'); babel = require('babel-core'); } const uglifyOptions = { ecma: "es6", mangle: { // ecma:"es6", properties: { keep_quoted: true, builtins: false, reserved: require('../node_modules/uglify-es/tools/domprops') }, // toplevel: true }, compress: { ecma: "es6", keep_fargs: false, toplevel: true, dead_code: true, unused: true, passes: 1, }, // sourceMap:{ // url:"inline" // }, // output: { // beautify: true // } }; const babelOptions = { compact: true, minified: true, presets: ['env'], // sourceMaps:"inline", // plugins: [["minify-mangle-names", {topLevel: true}], "transform-class-properties"] }; const options = require('../rollup.config'); const outputOptions = options.output; options.output = null; const inputOptions = options; async function build() { const bundle = await rollup.rollup(inputOptions); for (let i = 0, n = outputOptions.length; i < n; i++) { let {code, map} = await bundle.generate(outputOptions[i]); if (shouldMangleAndTranspile) { const uglifyRes = uglifyJs.minify(code, uglifyOptions); code = uglifyRes.code; fs.writeFileSync('transpiled.js', code); const babelRes = babel.transform(code, babelOptions); code = babelRes.code; const uglifyRes2 = uglifyJs.minify(code, {mangle:{toplevel:true},compress: { keep_fargs: false, toplevel: true, dead_code: true, unused: true, passes: 1, },}); code = uglifyRes2.code; } fs.writeFileSync(outputOptions[i].file, code); } } build();