JSCompress: 프런트엔드 스크립트와 스타일을 한 번에 압축

요약

JSCompress는 편집기에 기대지 않고 JavaScript와 CSS를 한 번에 압축·병합합니다. 폴더를 고르고 깊이와 파일 종류를 정하면, 스타일은 YUI Compressor가 스크립트는 Closure Compiler가 처리합니다.

추천
이름
JSCompress
버전
20221028
요금
무료
오픈소스
비오픈소스
공식 사이트
https://www.jscompress.cn/
업데이트
2026-10-06 12:46

파일이 아니라 폴더를 다루는 압축 도구

JSCompress는 프런트엔드 자산을 한 번에 압축하고 난독화하고 병합하는 무료 도구입니다. 이 문장에서 중요한 단어는 '한 번에'입니다. 파일 하나를 압축하는 것은 열 가지도 넘는 해법이 있는 이미 풀린 문제이고, 서너 백 개를 변경 때마다 같은 상태로 유지하는 것이 실제 프로젝트에서 정말로 무너지는 부분입니다.

단독으로 실행되고 편집기나 빌드 스크립트에 매달리지 않습니다. 이것은 의도한 위치입니다. 스크립트와 스타일이 담긴 폴더는 개발 환경이 전혀 없는 기계에서도 압축할 수 있고, 그 기계가 바로 배포판이 조립되는 자리인 경우가 많습니다.

JSCompress 메인 창

한 화면 아래 두 개의 엔진

스타일은 YUI Compressor for .Net에, 스크립트는 Google Closure Compiler에 맡깁니다. 두 개를 쓰는 것은 우유부단이 아니라 두 언어에 필요한 처리가 다르기 때문입니다. CSS 압축은 주로 공백과 주석, 중복을 다루는 일이고 결과는 브라우저가 해석할 수 있는 스타일시트여야 합니다. JavaScript 압축은 다른 문제입니다. 공백을 넘어 식별자를 줄이고 도달하지 않는 코드를 없앨 수 있지만, 결과의 동작은 원본과 완전히 같아야 합니다. 겉보기보다 훨씬 엄격한 요구입니다.

검증된 엔진을 쓰는 것은 직접 만든 압축 도구가 흔히 하는 실패를 피하는 방법이기도 합니다. 줄바꿈만 지우는 도구는 금방 만들 수 있고, 처음 만난 정규식을 망가뜨립니다.

종류별 압축 설정
엔진 선택지

흐름은 네 가지 판단

설정은 파일 종류마다 한 번, 대화 상자에서 정합니다. 스크립트, 스타일, 이미지, 전처리 시트에 각각 어떤 방식을 적용할지. 그다음 작업은 폴더에서 시작합니다. 폴더를 오른쪽 단추로 누르고 그 디렉터리의 파일을 압축하는 항목을 고릅니다.

남은 질문은 두 개이고 둘 다 중요합니다. 하나는 깊이입니다. 그 층의 파일만인지, 아래의 모든 것을 포함하는지. 다른 하나는 이번 실행에 어떤 파일 종류를 넣을지입니다. 그러면 압축이 시작되고, 원래라면 오후 내내 저장을 반복해야 했을 폴더가 기록을 읽는 시간에 끝납니다.

폴더 오른쪽 단추 메뉴
깊이 선택
파일 종류

문자 인코딩, 일괄 도구가 넘어지는 지점

소스 파일을 다시 쓰는 도구는 그것이 어떻게 쓰였는지 알아야 합니다. 여러 해에 걸쳐 쌓인 폴더에는 여러 인코딩의 파일이 섞여 있고, 그중 하나를 가정한 압축 도구는 나머지의 문자열을 모두 망가뜨립니다. 탐지는 화려하지 않지만, '이번 실행 결과를 믿을 수 있다'와 '나중에 하나씩 확인해야 한다'의 차이가 여기서 갈립니다.

같은 우려가 병합에도 적용됩니다. 여러 스크립트를 한 파일로 합치는 것은 앞 파일의 마지막 줄과 다음 파일의 첫 줄이, 둘 다 말하지 않은 무언가로 합쳐지지 않을 때만 성립합니다.

인코딩 인식

실패라고 할 때, 대개 맞습니다

이미 압축된 파일을 압축하면 더 작아지는 대신 오류로 끝날 수 있습니다. 이것은 피해야 할 결함이 아닙니다. 압축된 코드는 더 이상 엔진이 기대하는 소스가 아니고, 같은 변환을 두 번 적용하면 동작이 달라지거나 해석되지 않는 출력이 생길 수 있습니다.

실무의 규칙은 이 도구가 전제로 삼은 것과 같습니다. 소스는 남기고, 압축 결과는 다른 곳에 내보내고, 압축물은 제품으로 다루며 다시 손대는 대상으로 보지 않는 것입니다.

압축 기록
압축 전과 후

어울리는 자리

JSCompress는 프런트엔드를 손으로 조립하거나, 빌드를 다른 사람이 관리하고 아무도 건드리고 싶지 않은 경우를 위한 것입니다. 창을 가진 일괄 도구이고 빌드 시스템이 아닙니다. 파일을 감시하지 않고 의존성을 해석하지 않으며 작업 실행기를 대신하지도 않습니다. 디렉터리 하나를 받아 더 작은 디렉터리를 돌려주고, 무슨 일이 있었는지 적은 기록을 함께 줍니다. 그것만으로 충분한 경우가 적지 않습니다.