-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.js
101 lines (95 loc) · 2.59 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
93
94
95
96
97
98
99
100
101
const fs = require('fs');
const path = require('path');
const gulp = require('gulp');
const less = require('gulp-less');
const postcss = require('gulp-postcss');
const autoprefixer = require('autoprefixer');
const easings = require('postcss-easings');
const modules = require('postcss-modules');
const {rollup} = require('rollup');
const rollupConfig = require('./rollup.config');
const MODULE_NAME = 'Taba';
const globals = {};
exports.bundleAll = () => {
return new Promise((resolve, reject) => {
gulp.src('src/styles/style.less')
.pipe(less())
.pipe(postcss([
autoprefixer({
browsers: 'last 2 versions'
}),
easings,
modules({
getJSON(cssFileName, json) {
// const baseName = path.basename(cssFileName) + '.json';
const baseName = 'class-name.json';
const jsonFileName = path.join(__dirname, 'lib', baseName);
fs.writeFileSync(jsonFileName, JSON.stringify(json));
}
})
]))
.pipe(gulp.dest('lib/'))
.on('end', () => {
bundle()
.then(() => resolve())
.catch(err => reject(err));
});
});
};
exports.bundle = bundle;
function bundle() {
return new Promise((resolve, reject) => {
rollup(rollupConfig)
.then(bundle => {
rollupConfig.cache = bundle;
['iife', 'es', 'umd'].forEach(format => {
switch (format) {
case 'iife': {
const opts = {
moduleName: MODULE_NAME,
globals,
format
};
const destPath = './dist/taba.js';
try {
fs.writeFileSync(destPath, bundle.generate(opts).code);
} catch (err) {
reject(err);
}
break;
}
case 'umd': {
const opts = {
moduleName: 'default',
globals,
format
};
const destPath = './dist/taba.umd.js';
try {
fs.writeFileSync(destPath, bundle.generate(opts).code);
} catch (err) {
reject(err);
}
break;
}
case 'es':
default: {
const opts = {
globals,
format,
exports: 'default'
};
const destPath = './dist/taba.es.js';
try {
fs.writeFileSync(destPath, bundle.generate(opts).code);
} catch (err) {
reject(err);
}
break;
}
}
});
resolve();
});
});
}