-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.js
More file actions
87 lines (75 loc) · 2.51 KB
/
build.js
File metadata and controls
87 lines (75 loc) · 2.51 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**
* Skrypt do budowania aplikacji
*/
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
// Kolory dla konsoli
const colors = {
reset: '\x1b[0m',
bright: '\x1b[1m',
green: '\x1b[32m',
yellow: '\x1b[33m',
blue: '\x1b[34m',
magenta: '\x1b[35m',
cyan: '\x1b[36m',
red: '\x1b[31m'
};
// Funkcja do logowania z kolorami
function log(message, color = colors.reset) {
const timestamp = new Date().toLocaleTimeString();
console.log(`${colors.cyan}[${timestamp}]${colors.reset} ${color}${message}${colors.reset}`);
}
// Funkcja do wykonywania poleceń
function execute(command, options = {}) {
log(`Wykonywanie: ${command}`, colors.yellow);
try {
execSync(command, { stdio: 'inherit', ...options });
return true;
} catch (error) {
log(`Błąd wykonywania polecenia: ${error.message}`, colors.red);
return false;
}
}
// Główna funkcja budująca
async function build() {
log('Rozpoczynanie procesu budowania aplikacji...', colors.bright + colors.green);
// Sprawdź, czy katalog dist istnieje, jeśli nie, utwórz go
const distPath = path.join(__dirname, 'dist');
if (!fs.existsSync(distPath)) {
log('Tworzenie katalogu dist...', colors.blue);
fs.mkdirSync(distPath, { recursive: true });
}
// Budowanie frontendu za pomocą Webpack
log('Budowanie frontendu za pomocą Webpack...', colors.magenta);
if (!execute('npx webpack --mode production')) {
log('Błąd podczas budowania frontendu!', colors.red);
return;
}
// Kopiowanie plików statycznych
log('Kopiowanie plików statycznych...', colors.blue);
const staticFiles = [
{ src: 'src/renderer/styles.css', dest: 'dist/styles.css' },
{ src: 'src/renderer/index.html', dest: 'dist/index.html' }
];
for (const file of staticFiles) {
try {
fs.copyFileSync(path.join(__dirname, file.src), path.join(__dirname, file.dest));
log(`Skopiowano: ${file.src} -> ${file.dest}`, colors.green);
} catch (error) {
log(`Błąd kopiowania pliku ${file.src}: ${error.message}`, colors.red);
}
}
// Budowanie aplikacji Electron
log('Budowanie aplikacji Electron...', colors.magenta);
if (!execute('npx electron-builder')) {
log('Błąd podczas budowania aplikacji Electron!', colors.red);
return;
}
log('Proces budowania zakończony pomyślnie!', colors.bright + colors.green);
}
// Uruchomienie procesu budowania
build().catch(error => {
log(`Nieoczekiwany błąd: ${error.message}`, colors.red);
process.exit(1);
});