חדש: 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 דרך המעטפת. אנטון (@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 וכלי build אחרים כדי לוודא שהתמונות שלכם מותאמות לאינטרנט בצורה הטובה ביותר.

אני רוצה להביע "תודה" גדולה לאנטון על הזמן שהתחייב לסקווש!

עבור Squoosh CLI ו-libSquoosh, זה עדיין מוקדם ויש לנו עוד רעיונות ותוכניות רבים שנרצה ליישם. בינתיים, אפשר לנסות את libSquoosh! עם זאת, חשוב לזכור שזו גרסה מוקדמת וניסיונית שיש סיכוי גבוה שתיתקלו בו כמה באגים. אם נתקלת בשאלות או שיש לך שאלות, אפשר לפתוח בעיה.

אם אתם מעוניינים לתרום ל-Squoosh — למשל לתרום לתיעוד הדל מאוד בנושא libSquoosh או לעזור בחלקים אחרים באפליקציה — אנחנו מתחילים תוכנית חונכות שתעזור לכם להתחיל. לקבלת מידע נוסף, אפשר לעיין בבעיה במעקב.