* docs: prepare Vendoo 1.41.2 git-ignore boundary hotfix * fix: track native source modules with root-anchored runtime ignores
32 lines
1.8 KiB
JavaScript
32 lines
1.8 KiB
JavaScript
import { mkdirSync, rmSync, existsSync } from 'fs';
|
|
import { resolve } from 'path';
|
|
import sharp from 'sharp';
|
|
import { renderImageVersion } from '../lib/image-editor.mjs';
|
|
|
|
const root = resolve('tmp-slice32-render');
|
|
rmSync(root, { recursive: true, force: true });
|
|
mkdirSync(resolve(root, 'source'), { recursive: true });
|
|
await sharp({ create: { width: 900, height: 1200, channels: 3, background: '#d8c1a7' } }).png().toFile(resolve(root, 'source', 'produkt.png'));
|
|
let recorded = null;
|
|
const result = await renderImageVersion({
|
|
uploadRoot: root,
|
|
sourcePath: 'source/produkt.png',
|
|
context: 'batch',
|
|
rootPath: 'source/produkt.png',
|
|
outputDirectory: 'batch/test-job',
|
|
outputFilename: 'produkt-webshop-01',
|
|
operations: {
|
|
resize: { width: 640, height: 640, fit: 'contain', background: '#ffffff' },
|
|
format: 'webp', quality: 82, sharpness: 12,
|
|
watermark: { enabled: true, text: 'Vendoo', position: 'bottom-right', opacity: 30 },
|
|
},
|
|
recordVersion: value => { recorded = value; return { id: 1, ...value }; },
|
|
});
|
|
if (!existsSync(resolve(root, result.filename))) throw new Error('Batch-Ausgabe fehlt.');
|
|
const meta = await sharp(resolve(root, result.filename)).metadata();
|
|
if (meta.width !== 640 || meta.height !== 640 || meta.format !== 'webp') throw new Error(`Falsche Ausgabe ${meta.width}x${meta.height} ${meta.format}`);
|
|
if (!result.filename.startsWith('batch/test-job/produkt-webshop-01')) throw new Error(`Falscher Ausgabeordner: ${result.filename}`);
|
|
if (recorded?.context !== 'batch' || recorded?.output_path !== result.filename) throw new Error('Nicht destruktiver Versionsdatensatz ist inkorrekt.');
|
|
console.log(JSON.stringify({ ok: true, output: result.filename, width: meta.width, height: meta.height, format: meta.format, version_context: recorded.context }, null, 2));
|
|
rmSync(root, { recursive: true, force: true });
|