-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.js
More file actions
99 lines (79 loc) · 2.69 KB
/
build.js
File metadata and controls
99 lines (79 loc) · 2.69 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
88
89
90
91
92
93
94
95
96
97
98
99
const fs = require('fs');
const path = require('path');
const SLIDES_DESKTOP_DIR = './slides-desktop';
const SLIDES_MOBILE_DIR = './slides-mobile';
const DIST_DIR = './dist';
const IMAGE_EXTENSIONS = ['.png', '.jpg', '.jpeg', '.webp'];
function getImageFiles(directory) {
try {
if (!fs.existsSync(directory)) {
console.warn(`Warning: Directory ${directory} does not exist`);
return [];
}
const files = fs.readdirSync(directory);
const imageFiles = files
.filter(file => {
const ext = path.extname(file).toLowerCase();
return IMAGE_EXTENSIONS.includes(ext);
})
.sort();
return imageFiles.map(file => `${path.basename(directory)}/${file}`);
} catch (error) {
console.error(`Error reading directory ${directory}:`, error.message);
return [];
}
}
function copyDirectory(src, dest) {
if (!fs.existsSync(src)) {
console.warn(`Warning: Source directory ${src} does not exist, skipping copy`);
return;
}
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
const files = fs.readdirSync(src);
files.forEach(file => {
const srcFile = path.join(src, file);
const destFile = path.join(dest, file);
fs.copyFileSync(srcFile, destFile);
});
}
function copyFile(src, dest) {
if (fs.existsSync(src)) {
fs.copyFileSync(src, dest);
}
}
function build() {
console.log('Building slideshow presentation...\n');
// Create dist directory
if (!fs.existsSync(DIST_DIR)) {
fs.mkdirSync(DIST_DIR, { recursive: true });
}
// Get slide files
const desktopSlides = getImageFiles(SLIDES_DESKTOP_DIR);
const mobileSlides = getImageFiles(SLIDES_MOBILE_DIR);
console.log(`Desktop slides found: ${desktopSlides.length}`);
console.log(`Mobile slides found: ${mobileSlides.length}\n`);
// Generate JSON files
fs.writeFileSync(
path.join(DIST_DIR, 'slides-desktop.json'),
JSON.stringify(desktopSlides, null, 2)
);
fs.writeFileSync(
path.join(DIST_DIR, 'slides-mobile.json'),
JSON.stringify(mobileSlides, null, 2)
);
console.log('Generated slides-desktop.json');
console.log('Generated slides-mobile.json\n');
// Copy slide directories to dist
copyDirectory(SLIDES_DESKTOP_DIR, path.join(DIST_DIR, 'slides-desktop'));
copyDirectory(SLIDES_MOBILE_DIR, path.join(DIST_DIR, 'slides-mobile'));
console.log('Copied slide directories to dist/\n');
// Copy HTML, CSS, JS files
copyFile('index.html', path.join(DIST_DIR, 'index.html'));
copyFile('style.css', path.join(DIST_DIR, 'style.css'));
copyFile('script.js', path.join(DIST_DIR, 'script.js'));
console.log('Copied index.html, style.css, script.js to dist/\n');
console.log('Build complete! ✓');
}
build();