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