unibabel.js/bin/build.js

63 rindas
1.7 KiB
JavaScript

#!/usr/bin/env node
(async function() {
'use strict';
var UglifyJS = require('uglify-js');
var path = require('path');
var fs = require('fs');
var promisify = require('util').promisify;
var readFile = promisify(fs.readFile);
var writeFile = promisify(fs.writeFile);
var gzip = promisify(require('zlib').gzip);
var name = require('../package.json').name;
// The order is specific, and it matters
var files = await Promise.all(
['../unibabel.js', '../hex.js', '../base32.js'].map(
async function(file) {
return (await readFile(
path.join(__dirname, file),
'utf8'
)).trim();
}
)
);
var license =
[
'// Unibabel Copyright 2015-2019 AJ ONeal. All rights reserved.',
'/* License at http://mozilla.org/MPL/2.0/ */',
'// Thirty-Two Copyright (c) 2011, Chris Umbel. All rights reserved.',
'/* License at https://github.com/chrisumbel/thirty-two */'
].join('\n') + '\n';
var header = ['var Unibabel = {};', ';(function () {'].join('\n') + '\n';
var footer = ['}());'].join('\n') + '\n';
var file = (
(license + header + files.join('\n') + '\n' + footer).trim() + '\n'
)
.replace(/\bmodule.exports\b/g, 'Unibabel')
.replace(/\bexports\b/g, 'Unibabel');
await writeFile(path.join(__dirname, '../dist', name + '.all.js'), file);
await writeFile(
path.join(__dirname, '../dist', name + '.all.js.gz'),
await gzip(file)
);
// TODO source maps?
var result = UglifyJS.minify(file, {
compress: true,
// mangling doesn't save significant
mangle: false
});
if (result.error) {
throw result.error;
}
file = license + result.code;
await writeFile(path.join(__dirname, '../dist', name + '.all.min.js'), file);
await writeFile(
path.join(__dirname, '../dist', name + '.all.min.js.gz'),
await gzip(file)
);
})();