-
-
Notifications
You must be signed in to change notification settings - Fork 56
/
bundler.js
56 lines (51 loc) · 2.34 KB
/
bundler.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
const fse = require('fs-extra');
const fs = require('fs');
const archiver = require('archiver');
const asar = require('asar');
const config = require('./config');
const constants = require('../constants');
async function createAsarFile() {
console.log(`Generating ${constants.files.resourceFile}...`);
const configObj = config.get();
const resourcesDir = configObj.cli.resourcesPath.replace(/^\//, "");
const clientLibrary = configObj.cli.clientLibrary.replace(/^\//, "");
const icon = configObj.modes.window.icon.replace(/^\//, "");
let binaryName = configObj.cli.binaryName;
fs.mkdirSync(`temp`, { recursive: true });
await fse.copy(`./${resourcesDir}`, `temp/${resourcesDir}`, {overwrite: true});
await fse.copy(`${constants.files.configFile}`, `temp/${constants.files.configFile}`, {overwrite: true});
await fse.copy(`./${clientLibrary}`, `temp/${clientLibrary}`, {overwrite: true});
await fse.copy(`./${icon}`, `temp/${icon}`, {overwrite: true});
await asar.createPackage('temp', `dist/${binaryName}/${constants.files.resourceFile}`);
}
function clearBuildCache() {
fse.removeSync('temp');
}
module.exports.bundleApp = async (isRelease) => {
let configObj = config.get();
let binaryName = configObj.cli.binaryName;
try {
await createAsarFile();
console.log('Copying binaries...');
for(let platform in constants.files.binaries) {
for(let arch in constants.files.binaries[platform]) {
let originalBinaryFile = constants.files.binaries[platform][arch];
let destinationBinaryFile = originalBinaryFile.replace('neutralino', binaryName);
fse.copySync(`bin/${originalBinaryFile}`, `dist/${binaryName}/${destinationBinaryFile}`);
}
}
fse.copySync(`bin/${constants.files.dependencies.windows_webview2loader_x64}`,
`dist/${binaryName}/${constants.files.dependencies.windows_webview2loader_x64}`);
if (isRelease) {
let output = fs.createWriteStream(`dist/${binaryName}-release.zip`);
let archive = archiver('zip', { zlib: { level: 9 } });
archive.pipe(output);
archive.directory(`dist/${binaryName}`, false);
await archive.finalize();
}
clearBuildCache();
}
catch (e) {
console.error(e);
}
}