Memperkenalkan libSquoosh

Ini Squoosh, tetapi sebagai library Node.

Dengan senang hati kami memperkenalkan libSquoosh, library Node eksperimental yang dilengkapi dengan Squoosh CLI, yang memberi Anda semua kemampuan untuk Squoosh CLI dengan antarmuka idiomatis JavaScript.

Squoosh.app adalah PWA yang mengompresi gambar untuk Anda di browser. WebAssembly mendukung banyak format gambar lama dan baru serta memprosesnya dalam sisi klien pada browser. Ini berarti gambar Anda tetap aman di komputer Anda sendiri daripada dikirim ke server di suatu tempat, dan Squoosh dapat berfungsi bahkan saat offline.

Di Chrome DevSummit 2020 kami telah mengumumkan Squoosh v2, beserta Squoosh CLI untuk menghadirkan semua codec Squoosh ke command line menggunakan Node dan WebAssembly. Dengan begitu, Anda dapat mengompresi seluruh folder dengan satu perintah dan menggunakan CLI agar dapat memilih parameter codec untuk Anda.

CLI memungkinkan banyak otomatisasi dan jadi, wajar saja jika developer mulai meminta antarmuka yang lebih idiomatis daripada memanggil Squoosh CLI secara terprogram melalui shell. Anton (@atsend on GitHub) melanjutkan tugas dan memisahkan kode Squoosh CLI menjadi dua bagian: Kode antarmuka command line dan fungsi inti yang mendasarinya.

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();

Tujuan kami adalah membuat kompresi gambar lebih mudah diakses oleh penulis alat. Kami berharap dapat melihat integrasi ke Webpack, Rollup, dan alat build lainnya untuk memastikan gambar Anda dioptimalkan dengan tepat untuk web.

Saya ingin mengucapkan "terima kasih" yang sebesar-besarnya kepada Anton atas komitmennya untuk Squoosh!

Saat ini masih awal untuk Squoosh CLI dan libSquoosh dan kami memiliki lebih banyak ide dan rencana yang ingin kami terapkan. Sementara itu, cobalah libSquoosh! Namun, perhatikan bahwa ini masih merupakan rilis eksperimental awal dan ada kemungkinan Anda akan menemui beberapa bug. Jika Anda menemukan beberapa pertanyaan atau memiliki pertanyaan, buka masalah.

Jika Anda tertarik untuk berkontribusi pada Squoosh—misalnya berkontribusi pada dokumentasi yang sangat jarang seputar libSquoosh atau membantu bagian lain apa pun dari aplikasi—kami memulai program bimbingan untuk membantu Anda memulai. Jika Anda ingin mengetahui lebih lanjut, lihat masalah pelacakan kami.