63 rindas
1.7 KiB
JavaScript
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)
|
|
);
|
|
})();
|