1 | var uglify = require('uglify-js');
|
2 | var fs = require('fs-promise');
|
3 | var pathUtils = require('path');
|
4 | var mustache = require('mustache');
|
5 |
|
6 | fs.readdir('.').then(list => {
|
7 | var jsfilenames = list.filter(item => item.match(/\.js$/) && !item.match(/index\.js$/));
|
8 | return Promise.all(jsfilenames.map(filename => {
|
9 | return fs.readFile(filename, 'utf-8').then(js => {
|
10 | return {
|
11 | filename: filename,
|
12 | js: js
|
13 | };
|
14 | });
|
15 | }));
|
16 | }).then(files => {
|
17 | var sizes = {};
|
18 |
|
19 | files.forEach(file => {
|
20 | var key = pathUtils.basename(file.filename, '.js');
|
21 | var minjs = uglify.minify(file.js, {fromString: true}).code;
|
22 |
|
23 | sizes[key] = minjs.length + ' bytes';
|
24 | });
|
25 |
|
26 | return sizes;
|
27 | }).then(sizes => {
|
28 | return fs.readFile('readme.md.mustache', 'utf-8').then(template => {
|
29 | var readme = mustache.render(template, sizes);
|
30 | return fs.writeFile('readme.md', readme);
|
31 | }).then(() => {
|
32 | var index = Object.keys(sizes).map(module => {
|
33 | return `exports.${module} = require('./${module}.js');`;
|
34 | }).join('\n') + '\n';
|
35 | return fs.writeFile('index.js', index);
|
36 | });
|
37 | });
|