기능 소개
압축(minify)은 브라우저가 코드를 실행하는 데 필요 없는 공백, 줄바꿈, 주석, 긴 이름을 모두 제거합니다. 파일이 작을수록 더 빨리 다운로드되므로, 특히 모바일 네트워크에서 페이지 로드 시간과 Core Web Vitals가 개선됩니다.
이 도구는 JavaScript를 webpack, Rollup, Vite가 사용하는 압축기인 Terser로, CSS를 CSSO로 압축합니다. CSSO는 스타일시트 구조도 재정리합니다. 색상을 줄이고(#ffffff를 #fff로), 불필요한 단위와 값을 없애고(0px 0px를 0으로), 선택자나 선언이 같은 규칙을 병합합니다.
사용 방법
- 입력 상자에 코드를 붙여넣거나
.js또는.css파일을 끌어다 놓거나 예시를 클릭합니다. - JavaScript 또는 CSS를 선택합니다.
- JavaScript에서 변수 이름 줄이기는 지역 변수와 매개변수 이름을 한 글자로 바꿉니다. export된 이름과 전역 이름은 절대 바꾸지 않습니다.
- CSS에서 중복 규칙 병합은 선언이 같은 규칙을 하나로 합칩니다.
- 결과를 복사하거나 다운로드합니다. 각 상자 아래의 크기 카운터로 얼마나 줄었는지 확인할 수 있습니다.
JavaScript에 문법 오류가 있으면 오류 메시지에 줄과 열이 표시되므로 바로 해당 위치로 이동할 수 있습니다.
예시
// Sum the price of every item
export function cartTotal(items, discountPercent = 0) {
const subtotal = items.reduce(function (sum, item) {
return sum + item.price * item.quantity
}, 0)
return subtotal * (1 - discountPercent / 100)
}
변환 결과:
export function cartTotal(t,r=0){return t.reduce(function(t,r){return t+r.price*r.quantity},0)*(1-r/100)}
언제 사용하나요
CDN에 올릴 코드 조각, HTML 이메일의 인라인 스크립트, 북마클릿처럼 일회성 작업이 필요하거나, 라이브러리가 얼마나 작아질 수 있는지 확인할 때 사용하세요. 실제 프로젝트에서는 소스를 읽기 쉽게 유지할 수 있도록 번들러가 빌드할 때마다 압축하게 하는 것이 좋습니다.
자주 묻는 질문
› 코드가 어딘가에 업로드되나요?
아니요. Terser와 CSSO는 브라우저 안에서 실행되므로 비공개 소스 코드가 기기 밖으로 나가지 않습니다.
› 압축하면 JavaScript가 망가지지 않나요?
Terser는 올바른 코드의 동작을 그대로 유지하는 변환만 적용합니다. 다만 런타임에 함수나 변수 이름에 의존하는 코드(예: Function.name 사용)는 이름 줄이기의 영향을 받을 수 있으니, 그런 경우에는 "변수 이름 줄이기"를 끄세요.
› CSS에서 "중복 규칙 병합"이 선택 사항인 이유는 무엇인가요?
병합은 규칙 사이에서 선언을 옮깁니다. 거의 모든 스타일시트에서 안전하지만, CSS가 명시도가 같은 규칙들의 정확한 순서에 의존한다면 이 옵션을 끄면 원래 순서가 보장됩니다.
› 어떤 주석이 유지되나요?
"라이선스 주석 유지"를 켜면 대부분의 오픈소스 라이선스가 요구하는 대로 /*!로 시작하거나 @license 또는 @preserve가 들어 있는 주석이 남습니다. 그 밖의 주석은 모두 제거됩니다.