-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.babel.ts
71 lines (65 loc) · 2.08 KB
/
gulpfile.babel.ts
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
import { spawn } from 'child_process';
import { readFileSync, writeFileSync } from 'fs';
import { cyan, green } from 'chalk';
import { dest, parallel, series, src, task } from 'gulp';
import { safeLoad } from 'js-yaml';
import { Icons } from './types/icon';
const copy = (from: string, to: string) => {
return () => {
console.log(`Copy file from ${green(from)} to ${green(to)}`);
return src(from).pipe(dest(to));
};
};
task('build:check-asar', callback => {
const { asar } = safeLoad(
readFileSync('./electron-builder.yml', 'utf8'),
) as { asar: boolean } & Record<string, any>;
if (asar !== false)
throw new Error(
`The config ${cyan('build.asar')} must be ${cyan('false')}`,
);
callback();
});
task(
'build:electron:fast',
series(
'build:check-asar',
callback => {
console.log(`Run: ${green('electron-webpack main')}`);
spawn('yarn.cmd', ['electron-webpack', 'main'], {
stdio: 'inherit',
}).on('close', code => callback(code));
},
copy('./dist/main/**/*', './dist/win-unpacked/resources/app/'),
),
);
task(
'build:nuxt:fast',
series(
'build:check-asar',
callback => {
console.log(`Run: ${green('nuxt-ts build')}`);
spawn('yarn.cmd', ['nuxt-ts', 'build'], {
stdio: 'inherit',
}).on('close', code => callback(code));
},
copy('./dist/renderer/**/*', './dist/win-unpacked/resources/app/'),
),
);
task('build:fast', parallel('build:nuxt:fast', 'build:electron:fast'));
task('util:icon', async () => {
const json: Icons = JSON.parse(
readFileSync('./assets/fonts/aicon.json', 'utf8'),
);
const map = json.icons.reduce(
(obj, current) => ({
...obj,
[current.properties.name]: String.fromCharCode(
current.properties.code,
),
}),
{},
);
const mapString = JSON.stringify(map, undefined);
writeFileSync('./assets/fonts/aicon.map.json', mapString);
});