UNPKG

vite-plugin-lqip

Version:

Low-quality image placeholder (LQIP) plugin for Vite.

52 lines (51 loc) 3.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const mime_1 = __importDefault(require("mime")); const node_path_1 = __importDefault(require("node:path")); const sharp_1 = __importDefault(require("sharp")); function vitePluginLqip(options) { return { name: 'vite-plugin-lqip', enforce: 'pre', async load(id) { const [base, search] = id.split('?'); if (!search) { return null; } const s = new URLSearchParams(search); if (!s.has('lqip')) { return null; } const img = (0, sharp_1.default)(base); const metadata = await img.metadata(); const output = await img .toFormat('webp', { smartSubsample: true, ...options?.sharp?.webp, }) .blur(1.25) .resize({ width: 32, height: 32, fit: 'inside', kernel: sharp_1.default.kernel.cubic, ...options?.sharp?.resize, }) .toBuffer(); const lqip = `data:${mime_1.default.getType(node_path_1.default.extname(base))};base64,${output.toString('base64')}`; return `import src from '${base}?url'; export default { lqip: \`${lqip}\`, src, width: ${metadata.width ?? -1}, height: ${metadata.height ?? -1}, }; `; }, }; } exports.default = vitePluginLqip; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsMERBQTZCO0FBQzdCLGtEQUEwQjtBQW9CMUIsU0FBd0IsY0FBYyxDQUFDLE9BQTJCO0lBQ2pFLE9BQU87UUFDTixJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ1osTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDYixPQUFPLElBQUksQ0FBQztZQUNiLENBQUM7WUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQztZQUNiLENBQUM7WUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQUssRUFBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUc7aUJBQ3RCLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSTthQUN2QixDQUFDO2lCQUNELElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ1YsTUFBTSxDQUFDO2dCQUNQLEtBQUssRUFBRSxFQUFFO2dCQUNULE1BQU0sRUFBRSxFQUFFO2dCQUNWLEdBQUcsRUFBRSxRQUFRO2dCQUNiLE1BQU0sRUFBRSxlQUFLLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQzFCLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNO2FBQ3pCLENBQUM7aUJBQ0QsUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksR0FBRyxRQUFRLGNBQUksQ0FBQyxPQUFPLENBQUMsbUJBQUksQ0FBQyxPQUFPLENBQUMsSUFBSyxDQUFDLENBQUMsV0FBVyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFFN0YsT0FBTyxvQkFBb0IsSUFBSTs7O1lBR3RCLElBQUk7O1dBRUwsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDbkIsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7O0lBRTdCLENBQUM7UUFDSCxDQUFDO0tBQ0QsQ0FBQztBQUNILENBQUM7QUEzQ0QsaUNBMkNDIn0=