wordRotator/bin/build.js
2018-09-23 16:48:52 +02:00

88 lines
2.3 KiB
JavaScript
Executable File

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;
var regenerator = null;
if (shouldMangleAndTranspile) {
uglifyJs = require('uglify-es');
babel = require('babel-core');
regenerator = require('regenerator');
}
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: ["regenerator-runtime"]
};
const regeneratorOptions = {
includeRuntime: true,
// sourceMaps:"inline",
};
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;
code = regenerator.compile(code, regeneratorOptions).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();