معرفی libSquoosh

Squoosh است، اما به عنوان یک کتابخانه Node.

ما خوشحالیم که libSquoosh را معرفی می کنیم، یک کتابخانه Node آزمایشی که Squoosh CLI بر روی آن ساخته شده است و همه قابلیت های Squoosh CLI را با یک رابط اصطلاحی JavaScript در اختیار شما قرار می دهد.

Squoosh.app یک PWA است که تصاویر را برای شما در مرورگر فشرده می کند. بسیاری از فرمت های تصویر قدیمی و جدید را پشتیبانی می کند و آنها را در سمت مشتری در مرورگر از طریق WebAssembly پردازش می کند. این بدان معناست که تصاویر شما به جای اینکه به سروری در جایی ارسال شوند، به طور ایمن در رایانه شخصی شما باقی می مانند و Squoosh حتی در حالت آفلاین نیز کار می کند.

در Chrome DevSummit 2020، ما Squoosh v2 را به همراه Squoosh CLI معرفی کردیم تا همه کدک‌های Squoosh را با استفاده از Node و WebAssembly به خط فرمان بیاورند. این به شما امکان می دهد کل پوشه ها را با یک دستور فشرده کنید و از CLI استفاده کنید تا به آن اجازه دهید پارامترهای کدک را برای شما انتخاب کند.

CLI بسیاری از اتوماسیون ها را فعال می کند و بنابراین طبیعی است که توسعه دهندگان شروع به درخواست رابط اصطلاحی تری نسبت به فراخوانی برنامه نویسی Squoosh CLI از طریق پوسته کنند. Anton (@atjn در GitHub) به این کار گام برداشت و کد Squoosh CLI را به دو بخش تقسیم کرد: کد رابط خط فرمان و عملکرد اصلی.

import { ImagePool } from "@squoosh/lib";

// libSquoosh uses a worker-pool under the hood
// to parallelize all image processing.
const imagePool = new ImagePool();

// Accepts both file paths and Buffers/TypedArrays.
const image = imagePool.ingestImage("./squoosh.jpeg");

// Optional.
// await image.preprocess({
//   resize: {
//     enabled: true,
//     width: 128,
//   },
// });

await image.encode({
  // All codecs are initialized with default values
  // that can be individually overwritten.
  mozjpeg: {
    quality: 10,
  },
  avif: {
    cqLevel: 10,
  },
  jxl: {},
});

const { extension, binary } = await image.encodedWith.mozjpeg;
await fs.writeFile(`output.${extension}`, binary);
// ... same for other encoders ...

await imagePool.close();

هدف ما این است که فشرده سازی تصویر را برای نویسندگان ابزار در دسترس تر کنیم. امیدواریم شاهد ادغام با Webpack، Rollup و سایر ابزارهای ساخت باشیم تا مطمئن شویم تصاویر شما به طور مناسب برای وب بهینه شده اند.

من می خواهم یک "متشکرم" بزرگ را از آنتون به خاطر زمانی که به اسکووش اختصاص داده است ابراز کنم!

هنوز برای Squoosh CLI و libSquoosh زود است و ما ایده‌ها و طرح‌های بیشتری داریم که می‌خواهیم آنها را اجرا کنیم. در ضمن، libSquoosh را امتحان کنید! با این حال، توجه داشته باشید که این یک نسخه اولیه و آزمایشی است و احتمال زیادی وجود دارد که با برخی از اشکالات مواجه شوید. اگر سؤالی دارید یا سؤالی دارید، لطفاً یک موضوع را باز کنید.

اگر علاقه مند به مشارکت در Squoosh هستید - برای مثال مشارکت در اسناد بسیار کم در اطراف libSquoosh یا کمک به هر یک از بخش های دیگر برنامه - ما در حال شروع یک برنامه راهنمایی برای کمک به شما برای شروع هستیم. اگر می خواهید بیشتر بدانید، مشکل ردیابی ما را بررسی کنید.