-
Notifications
You must be signed in to change notification settings - Fork 7
/
rebuild-components-bundle.js
55 lines (45 loc) · 1.5 KB
/
rebuild-components-bundle.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
const co = require('co');
const path = require('path');
const fs = require('mz/fs');
const minimist = require('minimist');
const thenify = require('thenify');
const rimraf = thenify(require('rimraf'));
const {
buildComponentsBundle,
} = require('./endpoints/components-bundle-builder');
const config = require('./config');
const constants = require('./common/constants');
const defaults = {
clean: true,
'install-loaders': true,
watch: false,
'log-npm': false,
'log-webpack': false,
};
co(function* () {
const argv = Object.assign(defaults, minimist(process.argv.slice(2)));
if (!argv._.length) throw new Error('Project name is required');
const projectName = argv._[0];
const projectsDir = config.get('projectsDir');
const projectDir = path.join(projectsDir, projectName);
const contents = yield fs.readdir(projectDir);
const skip = [constants.PROJECT_FILE];
if (!argv['install-loaders']) skip.push('node_modules');
for (let i = 0, l = contents.length; i < l; i++) {
if (skip.indexOf(contents[i]) === -1) {
yield rimraf(path.join(projectDir, contents[i]));
}
}
const project = require(path.join(projectDir, constants.PROJECT_FILE));
const npmLogger = argv['log-npm'] ? console.log : () => {};
yield buildComponentsBundle(project, {
clean: argv.clean,
noInstallLoaders: !argv['install-loaders'],
printWebpackOutput: argv['log-webpack'],
npmLogger,
});
process.exit(0);
}).catch(err => {
console.error(err.message || err.toString());
process.exit(1);
});