wordRotator/bin/build.js
2018-05-23 19:04:35 +02:00

78 lines
2.1 KiB
JavaScript

const shouldMangleAndTranspile = (process.argv.length >= 3 && process.argv[2] === "1");
// const shouldMangleAndTranspile = (process.argv.wordLength >= 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();