최고의 JavaScript 압축기 [닫힘]


171

사용 가능한 최고의 JavaScript 압축기는 무엇입니까? 다음과 같은 도구를 찾고 있습니다.

  • 사용하기 쉽다
  • 압축률이 높다
  • 신뢰할 수있는 최종 결과 생성 (코드를 엉망으로 만들지 않음)

14
2011 년의 상황을 아는 사람이 있습니까?
Dan

4
이제는 2012 년이며 UglifyJS와 Closure가 승자라고 생각합니다. UglifyJS를 사용하며 일반적으로 다른 모든 것에서 바지를 이깁니다.
mkoistinen

jQuery Mobile 다중 페이지 앱에 htmlcompressor.com/compressor.html 을 사용 합니다. <script> 태그가있는 HTML 파일을 가져와 HTML, JavaScript 및 CSS를 압축합니다. 매력처럼 작동합니다.
Anders

2017 년-최신 소식은 무엇입니까?
Abhinav Singi 7

기본 "안전한"구성으로 UglifyJS는 "안전"하기 때문에 조금만 승리합니다. 고급 전력 사용을 위해 Closure Compiler는 UglifyJS의 엉덩이를 손에 넣습니다. ADVANCDED_OPTIMIZATIONS를 사용하는 클로저 컴파일러는 워크 플로와 코드를 동시에 최적화하는 데 도움이되는 모든 종류의 트릭을 수행 할 수 있습니다. Closure Compiler의 굉장함의 예는 stackoverflow.com/a/50355530/5601591 을 참조하십시오 (면책 조항 : 다른 곳에서 적합한 블로그 게시물을 찾을 수 없으므로 작성한 게시물을 참조해야했습니다).
Jack Giffin

답변:


149

최근 에 JavaScript로 작성된 JavaScript 압축기 UglifyJS를 발표 했습니다 (NodeJS Node.js 플랫폼에서 실행되지만 Node.js내부 가 필요하지 않으므로 JavaScript 엔진에서 실행되도록 쉽게 수정할 수 있음 ). YUI CompressorGoogle Closure 보다 훨씬 빠르며 테스트 한 모든 스크립트에서 YUI 보다 압축률이 높으며 Closure보다 안전합니다 ( "eval"또는 "with"를 다루는 것을 알고 있습니다).

공백 제거 외에도 UglifyJS는 다음을 수행합니다.

  • 로컬 변수 이름을 변경합니다 (보통 단일 문자로)
  • 연속적인 var 선언을 조인
  • 불필요한 브래킷, 파 렌스 및 세미콜론을 삽입하지 마십시오
  • IF를 최적화합니다 (필요하지 않은 것을 감지하면 "else"를 제거하고 가능하면 IF를 &&, || 또는? / : 연산자로 변환합니다).
  • 변환 foo["bar"]foo.bar가능한
  • 가능한 경우 객체 리터럴의 키에서 따옴표를 제거합니다.
  • 더 작은 코드로 이어질 때 간단한 표현식을 해결합니다 (1 + 3 * 4 ==> 13)

추신 : 오, "미화"도 가능합니다. ;-)


17
우리는 엔터프라이즈 급 응용 프로그램에서 uglify를 사용합니다. 잘하고 있어요.
gyorgyabraham

노드의 jsmin과 비교할 수 있습니까?
Gringo Suave

최근에 추하게 API 호출 하락
Gadelkareem을

@mishoo 안녕하세요, Uglify JS2를 좋아합니다. 요즘 네트워크가 제대로 작동하지 않습니다 ... Windows에서 사용하고 싶습니다. 어떤 해결책? : o)
Hydroper

@mishoo git link를 보여 주지만 사용법을
알지 못합니다

124

몇 년 후 UglifyJS 이 질문을 다시 방문 하는 것이 현재 가장 좋은 선택 인 것 같습니다.

아래에 언급 된대로 NodeJS 플랫폼에서 실행되지만 모든 JavaScript 엔진에서 실행되도록 쉽게 수정할 수 있습니다.

--- 아래의 오래된 답변 ---

구글은 여기여기에서 볼 수있는 가장 작은 파일을 생성하는 것으로 보이는 폐쇄 컴파일러 를 출시 했습니다.

그 전에 다양한 옵션 은 다음과 같습니다

기본적으로 Packer 는 초기 압축에서 더 나은 작업을 수행하지만 유선으로 보내기 전에 파일을 압축 하려면 YUI 압축기 가 최종 크기가 가장 작습니다.

테스트는 jQuery 코드 btw에서 수행되었습니다.

  • 원래 jQuery 라이브러리 62,885 바이트, gzip 이후 19,758 바이트
  • jQuery는 JSzip으로 36,391 바이트, gzip 이후 11,541 바이트로 축소되었습니다.
  • jzip은 gzip 이후 21,557 바이트, 11,119 바이트로 Packer로 축소되었습니다.
  • jzip은 Yzip 압축기로 gzip 이후 31,822 바이트, 10,818 바이트로 축소되었습니다.

@ 다니엘 제임스 (Daniel james)압축 압축기 가 차트를 최고의 압축으로 이끄는 것을 보여주는 압축기 압축기 에서 언급 하므로 ymmv


Packer는 'base62 encode'를 해제 할 수있는 옵션이 있으며 jQuery의 경우 gzip 이후 yui보다 작게 압축됩니다. jquery는 '안전한'압축기가 특정 압축을 수행하지 못하도록하는 'eval'및 'with'를 사용하지만 패커는이를 무시하기 때문입니다. 일반적으로 안전하지는 않지만 jQuery는 Packer에 대해 테스트되었습니다.
Daniel James

또한 믿지 않으면 compressorrater.thruhere.net을 사용해보십시오 .
Daniel James

9
패커의 단점 인 감압 시간을 잊지 마십시오.
Nosredna 2016 년

1
때로는 최악의 압축기 (원본보다 더 큰 출력)이 될 수 폐쇄 구글, 조심 - 그것은에 문자열에 ASCII가 아닌 문자로 변환 \uxxxx기본적으로 리터럴 .. 예를 들어, 사용 --charset UTF-8(당신이 확실하면 어떻게 든 그것에 대해 브라우저 알고하자)
mykhal

ClosureCompiler 출력이 작동하지 않습니다. jscompress.com 작동
codenamezero

43

YUI Compressor 가 갈 길입니다. 압축률이 뛰어나고 테스트를 거쳤으며 많은 상위 사이트에서 사용 중이며 개인적으로 권장합니다.

단일 JavaScript 오류 또는 딸꾹질없이 프로젝트에 사용했습니다. 그리고 그것은 좋은 문서가 있습니다.

CSS 압축 기능을 사용한 적이 없지만 존재합니다. CSS 압축도 잘 작동합니다.

참고 : Dean Edwards의 / packer /는 YUI Compressor보다 더 나은 압축률을 얻었지만 사용할 때 JavaScript 오류가 발생했습니다.


5
Packer는 파일 크기 측면에서 좋아 보이지만 일반적으로 압축을 풀 때 소요되는 시간이 더 작은 파일을 튜브를 통해 전송하는 데 걸리는 시간보다 길다는 것이 밝혀졌습니다. 내가 본 실제 브라우저 벤치 마크의 대부분은 브라우저에서 실행 시간 측면에서 gzip과 함께 제공되는 압축되지 않은 원시 파일보다 느립니다.
Sponsz 대령

여기에 하나의 벤치 마크가 있습니다 : ericmmartin.com/comparison-of-javascript-compression-methods
Sponsz 대령

다음은 java 실행을 처리하지 않으려는 경우 압축기의 온라인 버전입니다. refresh-sf.com/yui
Bryan Legend

패커를 사용하여 압축 된 스크립트는 Base62 인코딩 옵션을 확인하지 않는 한 압축을 풀 필요가 없습니다 (일반인의 gzip이므로 수행하지 말아야합니다. 대부분의 최신 서버는 gzip을 지원합니다). 악용 할 중복성이 없기 때문에 base62로 인코딩 된 파일을 압축 할 필요가 없습니다. 최신 버전의 패커 (최종 버전)에는 버그가없고, 압축을 풀지 않는 오버 헤드가 없으며 (62 인코딩하지 않는 한) 여전히 압축률이 가장 높습니다. 또한 packer의 명령 행 버전이 있습니다. 다음과 같이 npm을 사용하여 설치하십시오 npm install packer. (= D
Aadit M Shah

8

Dojo 프로젝트에서 ShrinkSafe 사용 합니다. 실제로 코드에서 기호를 찾고 해당 범위를 이해하는 데 JavaScript 해석기 ( Rhino )를 사용하기 때문에 예외적 입니다. 다른 하나는 정규식을 사용하여 동일한 작업을 수행하는 많은 압축 도구와 달리 신뢰할 수는 없습니다.

실제로 현재 Visual Studio 솔루션 의 웹 배포 프로젝트 에 MSBuild 작업 이 있으며 스크립트를 실행하여 배포하기 전에 ShrinkSafe를 통해 솔루션의 모든 JS 파일을 실행합니다.

편집 : 그건 그렇고, "최고의"기준은 프로젝트의 요구에 따라 달라질 수 있기 때문에 토론에 열려 있습니다. 개인적으로 ShrinkSafe는 좋은 균형이라고 생각합니다. 가장 작은 크기 == 최고라고 생각하는 사람들에게는 불충분합니다.

편집 : YUI 압축기는 Rhino도 사용한다는 점은 주목할 가치가 있습니다.


5

JSMin을 시도하고 C #, Java, C 및 기타 포트가 있으며 쉽게 사용할 수 있습니다.


C # 포트가 이동 / 제거 되었습니까?
Greg B

4

Packer를 사용한다면, 'shrink variables'옵션으로 가서 결과 코드를 압축하십시오. base62 옵션은 서버가 gzip 파일을 보낼 수없는 경우에만 사용됩니다. 'shrink vars'가 포함 된 Packer는 YUI를 더 잘 압축하지만 세미콜론을 건너 뛴 경우 버그가 발생할 수 있습니다.

base62는 기본적으로 가난한 사람의 gzip이므로 base62 코드를 gzipping하면 gvars 코드가 축소 코드보다 큰 파일을 제공합니다.





1

다음 은 경로에서 모든 js 및 css를 찾고 / (선택적) 난독 화 하는 YUI 압축기 스크립트 ( Byuic )입니다. 빌드 프로세스에 통합하는 것이 좋습니다.



1

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress / csskompress는 JavaScript 및 CSS가 포함 된 파일에서 중요하지 않은 공백과 주석을 제거하기위한 두 개의 응용 프로그램 (kjscompress csscompress)으로 구성되어 있습니다. 둘 다 GNU / Linux 운영 체제 용 명령 줄 응용 프로그램입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.