/
build.js
72 lines (67 loc) · 1.62 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
const path = require('path');
const fs = require('fs-extra');
const rimraf = require('rimraf');
const join = (name) => path.join(__dirname, name);
const copyFiles = async (dir, list) => {
return await Promise.all(
list.map(async (file) => {
const originFile = join(`./${dir}/${file}`);
if (!fs.existsSync(originFile)) return;
return await fs.copy(originFile, join(`./dist/${dir}/${file}`));
}),
);
};
const buildServer = () => {
try {
rimraf(join('./dist/server'), async () => {
const list = ['dist', 'pm2-app.json', 'package.json', 'package-lock.json'];
await copyFiles('server', list);
console.log(`server build success!`);
});
} catch (err) {
console.log('build failed: \n' + err);
}
};
const buildClient = () => {
try {
rimraf(join('./dist/client'), async () => {
const list = [
'dist',
'public',
'server.js',
'next.config.js',
'pm2-app.json',
'package.json',
'package-lock.json',
];
await copyFiles('client', list);
console.log(`client build success!`);
});
} catch (err) {
console.log('build failed: \n' + err);
}
};
const buildAdmin = () => {
try {
rimraf(join('./dist/admin'), async () => {
const list = ['dist'];
await copyFiles('admin', list);
console.log(`admin build success!`);
});
} catch (err) {
console.log('build failed: \n' + err);
}
};
switch (process.env.BUILD_TYPE) {
case 'client':
buildClient();
break;
case 'server':
buildServer();
break;
case 'admin':
buildAdmin();
break;
default:
break;
}