التعريف بـ libSquoosh

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

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

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

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

توفِّر واجهة سطر الأوامر الكثير من عمليات التشغيل الآلي، لذا من الطبيعي أن يبدأ المطوّرون في طلب واجهة أكثر تعبيرًا من استدعاء واجهة سطر الأوامر آليًا من خلال واجهة Squoosh. أنطون (@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 أو المساعدة في أي من الأجزاء الأخرى من التطبيق، فنبدأ برنامج توجيه لمساعدتك في البدء. للحصول على مزيد من المعلومات، يمكنك مراجعة مقالة مشكلة في التتبُّع.