التعريف بـ libSquoosh

إنها Squoosh، ولكن كمكتبة عقدة.

يسرّنا أن نقدّم لك واجهة libSquoosh، وهي مكتبة عُقد تجريبية تم إنشاء واجهة Squoosh CLI عليها، مما يمنحك جميع إمكانات واجهة سطر الأوامر Squoosh من خلال واجهة JavaScript اصطلاحية.

Squoosh.app هو تطبيق ويب تقدّمي (PWA) يضغط الصور نيابةً عنك في المتصفح. وهو يتيح استخدام العديد من تنسيقات الصور القديمة والجديدة ويعالجها من جهة العميل في المتصفّح من خلال WebAssembly. وهذا يعني بقاء صورك بأمان على جهاز الكمبيوتر الخاص بك بدلاً من إرسالها إلى خادم في مكان ما، وأن تطبيق Squoosh يعمل حتى عندما تكون غير متصل بالإنترنت.

أعلنّا في مؤتمر Chrome DevSummit 2020 عن إصدار Squoosh v2، مع Squoosh CLI من أجل توفير جميع برامج ترميز Squoosh في سطر الأوامر باستخدام Node وWebAssembly. ويتيح لك ذلك ضغط مجلدات كاملة باستخدام أمر واحد والاستفادة من واجهة سطر الأوامر للسماح له باختيار معلَمات برنامج الترميز نيابةً عنك.

يتيح واجهة سطر الأوامر الكثير من الإجراءات المبرمَجة، لذا من الطبيعي أن يطلب المطوّرون واجهة مفهومة أكثر من الاستدعاء البرمجي لواجهة 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!

ما زلنا في وقت مبكر لكل من واجهة سطر الأوامر Squoosh وlibSquoosh، ولدينا العديد من الأفكار والخطط التي نود تنفيذها. في هذه الأثناء، جرّب libSquoosh! ومع ذلك، ضع في اعتبارك أن هذا إصدار تجريبي مبكر وهناك احتمال كبير بأن تواجه بعض الأخطاء. إذا عثرت على بعضها أو كانت لديك أسئلة، يُرجى فتح مشكلة.

إذا كنت مهتمًا بالمساهمة في تطبيق Squoosh - على سبيل المثال - المساهمة في الوثائق المتفرقة للغاية حول libSquoosh أو المساعدة في أي من الأجزاء الأخرى من التطبيق - فسنبدأ برنامج إرشادي لمساعدتك في البدء. إذا كنت تريد معرفة المزيد من المعلومات، يمكنك الرجوع إلى مشكلة التتبّع.