[javascript] 최고의 JavaScript 압축기 [닫힘]

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

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


답변

최근 에 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)

추신 : 오, “미화”도 가능합니다. 😉


답변

몇 년 후 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


답변

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

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

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

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


답변

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

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

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

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


답변

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


답변

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

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


답변

JSMin 은 또 하나입니다.