חדש: libSquoosh

זו סקווש, אבל כספריית צמתים.

אנחנו שמחים להציג את libSquoosh, ספריית צמתים ניסיונית שעליה בנוי 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!

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

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