Files
hotel777/server.js
2026-05-01 16:17:59 +05:00

57 lines
2.2 KiB
JavaScript

const express = require('express');
const path = require('path');
const fs = require('fs');
const sharp = require('sharp');
const app = express();
const PORT = process.env.PORT || 3000;
// Функция для автоматической конвертации изображений
async function convertImages() {
const imgDir = path.join(__dirname, 'public', 'img');
// Проверяем, существует ли папка img
if (!fs.existsSync(imgDir)) {
console.log('Папка img не найдена, пропускаем конвертацию.');
return;
}
const files = fs.readdirSync(imgDir);
for (const file of files) {
const filePath = path.join(imgDir, file);
const ext = path.extname(file).toLowerCase();
// Проверяем, является ли файл JPG или PNG
if (ext === '.jpg' || ext === '.jpeg' || ext === '.png') {
const fileNameNoExt = path.parse(file).name;
const webpPath = path.join(imgDir, `${fileNameNoExt}.webp`);
// Проверяем, существует ли уже файл .webp для этого изображения
if (!fs.existsSync(webpPath)) {
try {
await sharp(filePath)
.webp({ quality: 85 }) // Качество 85 — золотая середина
.toFile(webpPath);
console.log(`✅ Сконвертировано: ${file} -> ${fileNameNoExt}.webp`);
} catch (err) {
console.error(`❌ Ошибка при конвертации ${file}:`, err);
}
}
}
}
}
// Раздача статических файлов из папки public
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'public', 'index.html'));
});
// Сначала конвертируем, потом запускаем сервер
convertImages().then(() => {
app.listen(PORT, () => {
console.log(`Сервер Hotel 777 запущен: http://localhost:${PORT}`);
});
});