-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
68 lines (62 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
const del = require('del');
const rollup = require('rollup');
const babel = require('rollup-plugin-babel');
const uglify = require('rollup-plugin-uglify');
const chokidar = require('chokidar');
const argv = process.argv;
const moduleName = 'regularRedux';
let bundles = [
{
format: 'umd', ext: '.js', plugins: [],
moduleName,
babelPresets: ['es2015-rollup', 'stage-1'], babelPlugins: []
},
{
format: 'umd', ext: '.min.js', plugins: [uglify()],
babelPresets: ['es2015-rollup', 'stage-1'], babelPlugins: [],
moduleName, minify: true
}
];
function build(bundles) {
let promise = Promise.resolve();
promise = promise.then(() => del(['dist/*']));
for (const config of bundles) {
promise = promise.then(() => rollup.rollup({
entry: 'src/index.js',
plugins: [
babel({
babelrc: false,
exclude: 'node_modules/**',
presets: config.babelPresets,
plugins: config.babelPlugins,
})
].concat(config.plugins),
}).then(bundle => {
bundle.write({
dest: `dist/${config.moduleName || 'main'}${config.ext}`,
format: config.format,
sourceMap: !config.minify,
moduleName: config.moduleName,
});
console.log('> build successfully');
}));
}
promise.catch(err => console.error(err.stack)); // eslint-disable-line no-console
}
const actionMap = {
build: ['--build', '-b'],
watch: ['--watch', '-w']
};
if (~actionMap.build.indexOf(argv[2])) {
bundles = bundles.slice(0, 1);
build(bundles);
} else if (~actionMap.watch.indexOf(argv[2])) {
bundles = bundles.slice(0, 1);
build(bundles);
chokidar.watch('./src', {
ignored: /(^|[\/\\])\../,
persistent: true
}).on('change', () => {
build(bundles.slice(0, 1));
});
}