UNPKG

2.43 kBJavaScriptView Raw
1var bundlpack = require('../index.js');
2var bytes = require('bytes');
3var consoleTable = require('console.table');
4var del = require('del');
5var fs = require('fs');
6var lessProcessor = require('bundl-pack-less');
7var uglify = require('uglify-js');
8var utils = require('seebigs-utils');
9
10var args = utils.args();
11
12var outputPath = './test/compare/';
13var entryPath = './test/fixtures/commonjs/entry.js';
14var entryContents = utils.readFile(entryPath);
15var paths = ['test/fixtures/commonjs'];
16var autoInject = !!args.autoInject;
17
18function mockContents(c) {
19 var _c = c;
20 return {
21 getString: function () {
22 return _c;
23 },
24 set: function (newC) {
25 _c = newC;
26 },
27 };
28}
29
30var r = {
31 name: 'my_bundle.js',
32 src: '../fixtures/commonjs/entry.js',
33 contents: mockContents(entryContents),
34 sourcemaps: [],
35};
36
37/* CLEAR */
38del.sync([__dirname + '/compare/']);
39
40/* BROWSERIFY */
41require('./compare_browserify.js')(entryPath, outputPath, autoInject);
42
43/* WEBPACK */
44// require('./compare_webpack.js')(entryPath, outputPath, autoInject);
45
46/* BUNDLPACK */
47var bp = bundlpack({
48 paths: paths,
49 css: {
50 autoInject: !!autoInject
51 },
52 json: {
53 autoInject: !!autoInject
54 },
55 less: lessProcessor,
56}).exec.call({}, r);
57
58function minify (contents) {
59 var opts = {
60 charset: 'utf8',
61 fromString: true
62 };
63 return uglify.minify(contents, opts).code;
64}
65
66var outname = 'bundlpack';
67var contents = bp.contents.getString();
68utils.writeFile(__dirname + '/compare/' + outname + '.js', contents, done);
69utils.writeFile(__dirname + '/compare/' + outname + '.min.js', minify(contents), done);
70
71
72/* COMPARE */
73
74var filesWritten = 0;
75function done () {
76 filesWritten++;
77 if (filesWritten >= 2) {
78 setTimeout(displayComparisonTable, 1500); // try to ensure all files are written
79 }
80}
81
82function displayComparisonTable () {
83 var finalFiles = utils.listFiles(__dirname + '/compare');
84 var toTable = [];
85 finalFiles.forEach(function (ff) {
86 var stats = fs.statSync(ff);
87 toTable.push({
88 bundle: ff.split('/').pop(),
89 size: stats.size,
90 readable: bytes(stats.size)
91 });
92 });
93 toTable.sort(function (a, b) {
94 if (a.size > b.size) {
95 return 1
96 } else {
97 return -1;
98 }
99 });
100 console.log();
101 console.table(toTable);
102}