Squoosh이지만 Node 라이브러리입니다.
Squoosh CLI가 빌드된 실험용 노드 라이브러리인 libSquoosh를 선보이게 되어 기쁩니다.
Squoosh.app 은 브라우저에서 이미지를 압축해 주는 PWA입니다. 많은 이전 이미지 형식과 새로운 이미지 형식을 지원하며 WebAssembly를 통해 브라우저의 클라이언트 측으로 이를 처리합니다. 따라서 사진이 어딘가의 서버로 전송되지 않고 내 컴퓨터에 안전하게 보관되어 오프라인 상태에서도 Squoosh가 작동합니다.
Chrome DevSummit 2020에서 Google은 Squoosh CLI와 함께 Node 및 WebAssembly를 사용하여 Squoosh의 모든 코덱을 명령줄로 가져오는 Squoosh v2를 발표했습니다. 이렇게 하면 하나의 명령어로 전체 폴더를 압축하고 CLI를 활용하여 코덱 매개변수를 선택하도록 할 수 있습니다.
CLI는 많은 자동화를 가능하게 하므로, 개발자가 셸을 통해 Squoosh CLI를 프로그래매틱 방식으로 호출하는 것보다 더 자연스러운 인터페이스를 요청하기 시작한 것은 당연합니다. Anton(GitHub의 @atjn)은 이 작업에 착수하여 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();
Google의 목표는 도구 작성자가 이미지 압축에 더 쉽게 액세스할 수 있도록 하는 것입니다. Webpack, Rollup 및 기타 빌드 도구에 통합되어 이미지가 웹에 맞게 최적화되기를 바랍니다.
이 자리에 계신 많은 분들께 Squoosh에게 전해야 할 생각을 해 봐요!
Squoosh CLI와 libSquoosh는 아직 초기 단계이므로 구현해 보고 싶은 아이디어와 계획이 더 많습니다. 그동안 libSquoosh! 하지만 이 버전은 초기 실험 버전이므로 버그가 발생할 수 있습니다. 문제를 발견하거나 궁금한 점이 있으면 문제를 열어 주세요.
libSquoosh에 관한 극히 희소한 문서를 작성하거나 앱의 다른 부분에 관해 도움을 주는 등 Squoosh에 기여하고 싶으시다면 멘토링 프로그램을 시작하겠습니다. 자세한 내용은 추적 문제를 확인하세요.