init
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import zlib from 'zlib';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { pipeline } from 'stream/promises';
|
||||
|
||||
// --- Konfiguration ---
|
||||
const GZIP_OPTIONS = { level: zlib.constants.Z_BEST_COMPRESSION };
|
||||
// --------------------
|
||||
|
||||
/**
|
||||
* Kopiert und komprimiert nur die index.html Datei von sourceDir nach destDir.
|
||||
* Die Datei wird nur als .gz gespeichert.
|
||||
*
|
||||
* @param {string} sourceDir - Quellordner
|
||||
* @param {string} destDir - Zielordner
|
||||
*/
|
||||
async function processIndexHtml(sourceDir, destDir) {
|
||||
console.log(`Processing index.html from '${sourceDir}' to '${destDir}'`);
|
||||
|
||||
// Erstelle Zielverzeichnis, wenn es nicht existiert
|
||||
if (!fs.existsSync(destDir)) {
|
||||
fs.mkdirSync(destDir, { recursive: true });
|
||||
}
|
||||
|
||||
const sourcePath = path.join(sourceDir, 'index.html');
|
||||
const destPathGz = path.join(destDir, 'index.html.gz');
|
||||
|
||||
// Prüfe ob index.html existiert
|
||||
if (!fs.existsSync(sourcePath)) {
|
||||
throw new Error(`index.html not found in '${sourceDir}'`);
|
||||
}
|
||||
|
||||
// Komprimiere index.html
|
||||
console.log(`Compressing ${sourcePath} -> ${destPathGz}`);
|
||||
try {
|
||||
const readStream = fs.createReadStream(sourcePath);
|
||||
const gzipStream = zlib.createGzip(GZIP_OPTIONS);
|
||||
const writeStream = fs.createWriteStream(destPathGz);
|
||||
await pipeline(readStream, gzipStream, writeStream);
|
||||
} catch (err) {
|
||||
console.error(`Error compressing ${sourcePath}:`, err);
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lösche den Ordner und seinen gesamten Inhalt
|
||||
*
|
||||
* @param {string} dir - Der zu löschende Ordner
|
||||
*/
|
||||
function removeDir(dir) {
|
||||
if (fs.existsSync(dir)) {
|
||||
console.log(`Removing existing directory '${dir}'`);
|
||||
fs.rmSync(dir, { recursive: true, force: true });
|
||||
}
|
||||
}
|
||||
|
||||
// Hauptfunktion
|
||||
async function main() {
|
||||
// Projekt-Root-Verzeichnis ermitteln
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const scriptDir = __dirname;
|
||||
const projectRoot = path.resolve(scriptDir, '..');
|
||||
const rootDir = path.resolve(projectRoot, '..');
|
||||
|
||||
// Quell- und Zielverzeichnisse
|
||||
const sourceDir = path.join(projectRoot, 'build');
|
||||
const destDir = path.join(rootDir, 'data', 'web');
|
||||
|
||||
if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
|
||||
console.error(`Error: Source directory '${sourceDir}' doesn't exist or is not a directory!`);
|
||||
console.error("Make sure to build the Svelte app first with 'npm run build'");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
removeDir(destDir);
|
||||
|
||||
try {
|
||||
await processIndexHtml(sourceDir, destDir);
|
||||
console.log("index.html processed successfully!");
|
||||
} catch(err) {
|
||||
console.error("Error during file processing:", err);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Ausführen des Skripts
|
||||
main();
|
||||
Reference in New Issue
Block a user