-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathbuild.js
More file actions
92 lines (62 loc) · 2.35 KB
/
Copy pathbuild.js
File metadata and controls
92 lines (62 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
Build Script
*/
var envify = require('envify/custom')
var UglifyJS = require("uglify-js")
var chalk = require('chalk')
var filesize = require("filesize")
var fs = require("fs")
var package = require('./package')
var _ = require('lodash')
var browserify = require('browserify')
var target = "dist/predicthq.js"
var b = browserify({standalone: 'PredictHQ', debug:false, expose: 'deps'})
b.add('./src/client.js')
b.transform('babelify')
b.transform('brfs')
b.transform(envify({
ENDPOINT_URL: 'https://api.predicthq.com',
VERSION: package.version
}))
console.info(chalk.green('\tBuild process started..\n'))
// Don't show individual counts for these modules (too many dependencies)
var modules = {
'core-js': []
}
var getSize = function(size){
var color = 'gray'
if (size > 5000) color = 'yellow'
if (size > 15000) color = 'red'
return chalk[color](_.padStart(filesize(size, {round: 0}), 5))
}
b.pipeline.on('file',function(file,id,parent){
var stats = fs.statSync(file)
var m = _.filter(_.keys(modules),function(k){ return file.indexOf(k) >= 0 })
if (m.length > 0){
modules[m[0]].push(stats['size'])
return
}
console.info('\t' + getSize(stats['size']) + '\t' + file)
})
b.bundle().pipe(fs.createWriteStream(target))
.on('close',function(){
_.each(modules,function(v,k){
if (v.length > 0)
console.info('\t' + getSize(_.sum(v)) + '\t' + _.upperCase(k) + ' (' + v.length + ' files)')
})
var stats = fs.statSync(target)
console.info(chalk.bold('\n\t Non Minified Size: ' + filesize(stats['size'])))
var result = UglifyJS.minify(target, {
compress: {
dead_code: true, // discard unreachable code
drop_debugger: true, // discard “debugger” statements
global_defs: { // global definitions
"DEBUG": false // matters for some libraries
}
}
})
var min_target = target.replace('.js', '.min.js')
fs.writeFileSync(min_target,result.code)
var stats = fs.statSync(min_target)
console.info(chalk.bold('\n\t Minified Size: ' + filesize(stats['size'])))
})