JavaScript 압축과 정렬
지역 이름을 줄이면 바이트가 가장 많이 줄지만, 이름을 텍스트로 찾는 코드는 깨집니다. eval, new Function, 매개변수 이름을 읽는 프레임워크 같은 것들이죠. 그런 것에 기대고 있다면 꺼 두세요.
JavaScript 압축 - 자주 묻는 질문
많이 쓰는 포매터
전체 기간이 도구가 하는 일
JavaScript 압축은 공백을 지우는 일이 아닙니다. 찾아 바꾸기로 하면 멀쩡해 보이면서 다르게 동작하는 파일이 나오고, 그 차이는 운영에서야 드러납니다. 이 페이지는 대부분의 프로젝트가 빌드 단계에서 쓰는 바로 그 엔진 Terser를 여러분의 브라우저 안에서 돌립니다.
사용 방법
- 1 JavaScript를 상자에 붙여 넣으세요.
- 2 대상을 고르고 이름을 줄일지 정하세요.
- 3 압축을 누르세요. 압축된 파일을 다시 펼치려면 정렬을 누르면 됩니다.
왜 찾아 바꾸기가 아니라 파서인가
JavaScript는 여러분이 빠뜨린 세미콜론을 스스로 채웁니다. "return"과 값 사이의 줄바꿈을 지우면 그 함수는 undefined를 돌려주기 시작합니다. 파일은 여전히 유효하고, 하는 일만 달라집니다. 같은 문자가 어디서는 나눗셈이고 어디서는 정규식입니다. 이걸 가르려면 패턴이 아니라 문법이 필요하고, 그래서 이 페이지는 진짜 파서를 씁니다.
실제로 작아지는 것
공백과 주석은 그중 가장 작은 몫입니다. 진짜 절약은 지역 변수를 한 글자로 바꾸고, 떨어져 있는 선언을 하나로 합치고, 상수를 미리 계산하고, 절대 실행되지 않는 코드를 버리는 데서 옵니다. 모두 트리 연산입니다. 압축기는 두 이름이 같은 결속을 가리키고 그 사이에서 아무도 그것을 읽지 않는다는 사실을 알아야 합니다.
이름 줄이기가 물어뜯는 지점
압축기는 자기가 볼 수 있는 것만 이름을 바꿉니다. 텍스트로 쓰인 이름은 보이지 않습니다. eval("count + 1"), new Function("a", "return a"), 또는 무엇을 넣을지 정하려고 함수의 매개변수 이름을 읽는 프레임워크. 이런 것들은 옛 이름을 계속 찾다가 아무것도 못 찾습니다. 이것은 언어의 성질이지 도구의 결함이 아닙니다. 그래서 이 스위치는 조용히 켜지 않고 여러분 손에 남겨 두었습니다.
정렬은 원본 파일을 되돌려 주지 않습니다
정렬은 들여쓰기와 줄바꿈을 되돌려 주므로 압축된 파일이 다시 읽을 만해집니다. 하지만 버려진 것은 돌아오지 않습니다. 주석은 사라졌고, 이름을 줄였다면 계속 짧은 채입니다. "e"가 한때 "errorMessage"였다는 걸 어떤 도구도 알아맞힐 수 없습니다. 운영 파일을 디버깅하려면 원본을 되살리는 것은 소스맵뿐입니다.