-
Notifications
You must be signed in to change notification settings - Fork 77
/
build.js
92 lines (87 loc) · 1.96 KB
/
build.js
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
var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
var uglify = require('uglify-js');
var rollup = require('rollup');
var replace = require('rollup-plugin-replace');
Promise
.all([
generateCommonModule(),
generateBundledDev(),
generateBundledProd(),
]);
function generateCommonModule() {
return rollup
.rollup({
entry: 'index.js',
external: [ 'vue' ],
})
.then(function(bundle) {
return bundle.generate({
format: 'cjs',
}).code;
})
.then(function(code) {
write('dist/vue-clickaway.common.js', code);
});
}
function generateBundledDev() {
return rollup
.rollup({
entry: 'index.js',
external: [ 'vue' ],
plugins: [
replace({
'process.env.NODE_ENV': '\'development\'',
}),
],
})
.then(function(bundle) {
return bundle.generate({
format: 'iife',
moduleName: 'VueClickaway',
globals: { vue: 'Vue' },
}).code;
})
.then(function(code) {
write('dist/vue-clickaway.js', code);
});
}
function generateBundledProd() {
return rollup
.rollup({
entry: 'index.js',
external: [ 'vue' ],
plugins: [
replace({
'process.env.NODE_ENV': '\'production\'',
}),
],
})
.then(function(bundle) {
return bundle.generate({
format: 'iife',
moduleName: 'VueClickaway',
globals: { vue: 'Vue' },
}).code;
})
.then(function(code) {
return uglify.minify(code, {
fromString: true,
}).code;
})
.then(function(code) {
return write('dist/vue-clickaway.min.js', code);
});
}
function write(dest, code) {
return new Promise(function(resolve, reject) {
mkdirp(path.dirname(dest), function(err) {
if (err) return reject(err);
fs.writeFile(dest, code, function(err) {
if (err) return reject(err);
resolve();
});
});
});
}