Đó là Squoosh, nhưng ở dạng thư viện Nút.
Chúng tôi rất vui được giới thiệu libSquoosh, một thư viện Nút thử nghiệm mà trên đó Squoosh CLI được xây dựng, cung cấp cho bạn tất cả tính năng cho Squoosh CLI với giao diện tương thích với JavaScript.
Squoosh.app là một PWA nén hình ảnh cho bạn trong trình duyệt. Công cụ này hỗ trợ nhiều định dạng hình ảnh cũ và mới, đồng thời xử lý các định dạng đó ở phía máy khách trong trình duyệt thông qua WebAssembly. Điều này có nghĩa là ảnh của bạn được lưu an toàn trên máy tính của riêng bạn chứ không phải bị gửi đến máy chủ ở đâu đó và Squoosh hoạt động ngay cả khi ngoại tuyến.
Tại Chrome DevSummit 2020, chúng tôi đã công bố Squoosh v2, cùng với Squoosh CLI để đưa tất cả các bộ mã hoá và giải mã của Squoosh vào dòng lệnh bằng cách sử dụng Node và WebAssembly. Thao tác này cho phép bạn nén toàn bộ thư mục bằng một lệnh và tận dụng CLI để cho phép thư mục chọn tham số bộ mã hoá và giải mã cho bạn.
CLI cho phép tự động hoá rất nhiều và vì vậy, chỉ có một điều tự nhiên là các nhà phát triển bắt đầu yêu cầu một giao diện mang tính quy ước hơn là gọi Squoosh CLI qua trình bao theo cách có lập trình. Anton (@atjn trên GitHub) đã thực hiện nhiệm vụ và tách mã Squoosh CLI thành hai phần: Mã giao diện dòng lệnh và chức năng cốt lõi cơ bản.
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();
Mục tiêu của chúng tôi là giúp các tác giả công cụ dễ tiếp cận tính năng nén hình ảnh hơn. Chúng tôi hy vọng có thể tích hợp vào Webpack, công cụ tổng hợp và các công cụ xây dựng khác để đảm bảo hình ảnh của bạn được tối ưu hoá phù hợp cho web.
tôi muốn nói lời cảm ơn sâu sắc đến bạn cho Anton vì đã gắn bó với Squoosh!
Vẫn còn sớm để ra mắt Squoosh CLI và libSquoosh và chúng tôi vẫn còn nhiều ý tưởng và kế hoạch khác để triển khai. Trong lúc chờ đợi, hãy thử dùng libSquoosh! Tuy nhiên, xin lưu ý rằng đây là bản phát hành thử nghiệm ở giai đoạn đầu và có khả năng bạn sẽ gặp một số lỗi. Nếu bạn tìm thấy một số hoặc có câu hỏi, vui lòng mở một vấn đề.
Nếu bạn muốn đóng góp cho Squoosh – chẳng hạn như đóng góp vào tài liệu cực kỳ đơn giản về libSquoosh hoặc trợ giúp bất kỳ phần nào khác của ứng dụng – chúng tôi đang bắt đầu một chương trình cố vấn để giúp bạn bắt đầu. Nếu bạn muốn biết thêm, hãy xem bài viết vấn đề theo dõi của chúng tôi.