자바스크립트 정렬·압축
JavaScript Beautifier & Minifier
자바스크립트·타입스크립트의 주석과 공백만 지워 압축하고, 한 줄로 뭉친 번들을 다시 들여써서 읽을 수 있게 만듭니다. 이름을 바꾸거나 구문을 다시 쓰지는 않습니다.
압축된 JavaScript·TypeScript를 읽을 수 있게 펼치고, 반대로 주석과 공백을 지워 작게 만들기도 합니다. 파서가 아니라 토크나이저 위에 지었고, 그 경계가 이 도구의 솔직한 부분입니다. 이름을 바꾸지 않고, 식을 다시 쓰지 않고, 문자열·템플릿·정규식 안은 건드리지 않습니다.
JavaScript · TypeScript 입력
.js / .ts 파일 놓기
이 탭 안에서만 읽습니다. 어디에도 올라가지 않습니다.
정렬 결과
토큰
109
줄
18
솔직하게: 이건 파서가 아니라 토크나이저입니다
- · 토크나이저는 정규식 리터럴과 나눗셈, 템플릿 리터럴 안의
${ {a:1}.a }, 문자열 안의 //를 정확히 구분합니다. 그래서 문자열·템플릿·정규식 안은 한 글자도 건드리지 않습니다. - · 압축은 주석과 공백만 지웁니다. 이름을 줄이거나 식을 바꾸지 않으며, 세미콜론 자동 삽입(ASI)이 기대는 줄바꿈 —
return뒤, 후위 ++ 앞, 다음 줄이 (나 [로 시작하는 곳 — 은 남깁니다. Terser처럼 작아지지는 않지만 동작이 달라지지도 않습니다. - · 정렬은 중괄호·대괄호 깊이와 ;로 문장 경계를 잡아 다시 들여쓰고, 원본에 있던 줄바꿈은 그대로 둡니다. 세미콜론을 넣어 주지 않고, 긴 줄을 접지 않으며, 객체 리터럴과 블록을 구분하지 못해 둘 다 한 줄에 한 항목씩 씁니다.
- · TypeScript 제네릭
Map<string, T>과 비교 연산a < b는 앞뒤 토큰을 보고 추측합니다. JSX는 다루지 않습니다. - · 난독화된 번들을 읽을 만하게 펼치는 데는 충분하고, 커밋할 코드를 다듬는 데는 Prettier가 맞습니다.
압축된 스택 트레이스의 원래 위치를 찾으려면 소스맵 원본 복원을 쓰세요.
사용 방법
코드를 붙여넣거나 파일을 놓습니다
한 줄로 뭉친 번들, 들여쓰기가 뒤섞인 파일, 제네릭이 든 TypeScript 모두 같은 방식으로 읽습니다. 파일은 이 탭에서 읽습니다.
정렬과 압축 중에 고릅니다
정렬은 중괄호 깊이로 다시 들여쓰고 원래 있던 줄바꿈은 그대로 둡니다. 압축은 주석과 공백만 지우며, 원하면 `/*!` 라이선스 표기는 남깁니다.
토큰 열 검사를 지켜봅니다
실행할 때마다 출력의 유효 토큰을 입력과 비교합니다. 혹시라도 다르면 빨간 글씨로 알리고 입력을 쓰라고 말합니다. 조용히 넘어가서는 안 되는 유일한 실패입니다.
자주 묻는 질문
압축했는데 왜 Terser보다 큰가요?
여기서는 주석과 공백만 지우기 때문입니다. Terser는 프로그램을 파싱해서 지역 변수 이름을 줄이고 상수를 접고 죽은 분기를 버립니다. 그러려면 AST와 스코프 분석이 필요하고, 둘 중 하나만 미묘하게 틀려도 동작이 달라집니다. 여기서는 덜 줄어드는 대신 코드가 깨지지 않는 쪽을 택했습니다.
압축하면 세미콜론 자동 삽입이 깨지지 않나요?
깨지지 않습니다. ASI가 기대는 줄바꿈은 남깁니다. `return` 뒤, 후위 `++` 앞, 다음 줄이 `(`나 `[`로 시작하는 자리입니다. 줄바꿈을 지우면 프로그램의 동작이 달라지는 바로 그 지점들입니다.
객체 리터럴이 왜 한 줄에 하나씩 나오나요?
토크나이저는 객체 리터럴과 블록을 구분할 수 없기 때문입니다. 둘 다 `{`입니다. 중괄호 깊이에 있는 것은 전부 같은 대접을 받습니다. 파서라면 구분하겠지만 이건 일부러 파서가 아닙니다.
JSX도 되나요?
아니요. JSX는 여기 없는 파서가 필요합니다. 토큰 수준에서 `<Foo>`는 비교 연산과 구분되지 않고, `Map<string, T>`를 처리하는 제네릭 추측이 이미 짐작으로 할 수 있는 한계입니다. `.tsx` 파일에는 Prettier를 쓰세요.
Prettier 대신 써도 되나요?
난독화된 번들을 읽는 용도라면 됩니다. 그게 목적입니다. 커밋할 코드라면 아닙니다. 세미콜론을 넣어 주지 않고, 긴 줄을 접지 않고, 인자 목록에 대한 견해가 없습니다. Prettier는 AST에서 다시 출력하기 때문에 그런 일을 할 수 있습니다.
이 도구로 이어지는 것
HTML 정렬·압축
HTML Beautifier & Minifier
HTML을 정렬하거나 압축하며 인라인 요소를 보존하고 공백 축약 여부를 고를 수 있습니다.
CSS 정렬·압축
CSS Beautifier & Minifier
선언 순서를 바꾸지 않고 CSS를 정렬하거나 압축하며, 토큰 구성을 그대로 보존합니다.
소스맵 원본 복원
Source Map Resolver
제공한 소스맵으로 압축된 스택 트레이스를 원본 파일과 줄 번호로 되돌립니다.
WebAssembly 분석
WebAssembly Inspector
.wasm 모듈의 임포트·익스포트·메모리·섹션 크기를 나열하고 텍스트 형식으로 출력합니다.
다음 단계
이 도구의 결과를 그대로 받을 수 있는 도구들입니다.
코드 이미지 만들기
Code Screenshot
코드 조각을 문법 강조·창 프레임·테마를 적용한 이미지로 만듭니다.
CSS 정렬·압축
CSS Beautifier & Minifier
선언 순서를 바꾸지 않고 CSS를 정렬하거나 압축하며, 토큰 구성을 그대로 보존합니다.
HTML 정렬·압축
HTML Beautifier & Minifier
HTML을 정렬하거나 압축하며 인라인 요소를 보존하고 공백 축약 여부를 고를 수 있습니다.
소스맵 원본 복원
Source Map Resolver
제공한 소스맵으로 압축된 스택 트레이스를 원본 파일과 줄 번호로 되돌립니다.
Base64 인코딩·디코딩
Base64 Encoder & Decoder
텍스트와 파일을 Base64·Base64URL로 인코딩·디코딩하며 UTF-8을 올바르게 처리합니다.
curl 코드 변환
curl to Code
curl 명령을 fetch·axios·파이썬 requests·Go·PHP·PowerShell 코드로 변환합니다.