Memperkenalkan libSquoosh

Ini adalah Squoosh, tetapi sebagai library Node.

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

Squoosh.app adalah PWA yang mengompresi gambar untuk Anda di browser. Platform ini mendukung banyak format gambar lama dan baru dan memprosesnya di sisi klien dalam browser melalui WebAssembly. Ini berarti foto Anda tetap aman di komputer Anda sendiri alih-alih dikirim ke server di suatu tempat, dan Squoosh tetap berfungsi bahkan saat offline.

Di Chrome DevSummit 2020, kami mengumumkan Squoosh v2, bersama dengan Squoosh CLI untuk menghadirkan semua codec Squoosh ke command line menggunakan Node dan WebAssembly. Ini membuat Anda dapat mengompresi seluruh folder dengan satu perintah dan menggunakan CLI untuk memungkinkannya memilih parameter codec untuk Anda.

CLI memungkinkan banyak otomatisasi, sehingga wajar saja jika developer mulai meminta antarmuka yang lebih idiomatis daripada memanggil Squoosh CLI secara terprogram melalui shell. Anton (@atjn di GitHub) memulai 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 dengan Webpack, Rollup, dan alat build lainnya untuk memastikan gambar Anda dioptimalkan dengan tepat untuk web.

saya ingin mengucapkan "terima kasih" kepada Anton karena dia telah berkomitmen pada Squoosh!

Squoosh CLI dan libSquoosh masih dalam tahap awal dan kami memiliki lebih banyak ide dan rencana yang ingin kami terapkan. Sementara itu, coba libSquoosh! Namun, perhatikan bahwa ini adalah 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 terkait libSquoosh atau membantu bagian lain dari aplikasi ini—kami memulai program bimbingan untuk membantu Anda memulai. Jika Anda ingin mengetahui lebih lanjut, lihat masalah pelacakan kami.