JavaScript 라이브러리를 최소화하고 압축하는 데 무엇을 사용합니까? [닫은

StackOverflow https://stackoverflow.com/questions/599911

문제

JavaScript 라이브러리를 최소화하고 압축하는 데 무엇을 사용합니까?

도움이 되었습니까?

해결책

나는 사용한다 유비 압축기. 일을 잘 수행하는 것 같습니다!

다른 팁

나는 사용했다 유비 압축기 오랫동안 문제가 없었지만 최근에 사용을 시작했습니다. Google 폐쇄 컴파일러 그리고 그것으로 약간의 성공을 거두었습니다. 지금까지의 인상 :

  • 일반적으로 파일 크기 감소 측면에서 Yui 압축기보다 성능이 우수합니다. 단순 모드에서는 소량과 고급 모드에서 많은 양으로.
  • Simple Mode는 지금까지 Yui 압축기만큼 신뢰할 수 있습니다. 내가 먹이를 먹은 것은 아무런 문제를 보여주지 않았습니다.
  • 고급 "컴파일"모드는 일부 스크립트에 적합하지만 스크립트의 극적인 크기 감소는 코드로 많은 막을 내릴 수있는 많은 시간을 보낼 수 있습니다. 거기 있습니다 이러한 문제 중 일부를 처리하는 방법 그리고 그것이하는 일을 이해하면 문제를 피하는 데 먼 길을 갈 수 있지만 일반적 으로이 모드를 사용하지 않습니다.

간단한 "컴파일"모드에서 Google Closure 컴파일러를 사용하여 yui 압축기를 약간 능가하기 때문에 이동했습니다. 나는 Yui 압축기보다 상당히 적은 것을 사용했지만 지금까지 본 것에서 추천 할 것입니다.

내가 아직 시도하지 않았지만 유망한 소리는 Mihai Bazon의 Uglifyjs.

여기에는 가능성이 있습니다.

내 개인적인 경험을 통해 Dojo SDK를 사용하여 사용자 정의 빌드를 구축하는 것이 좋습니다. 그런 다음 일반적인 수축 컴파일러 또는 Google Closure를 사용하도록 구성 할 수 있습니다. 그들은 지금도 지원합니다.

압축 측면에서 Google 폐쇄는 지금까지 나에게 가장 좋은 결과를 낳는 것 같지만, 일반적으로 수축에 만족하며 조금 더 오래되고 강력하지만 폐쇄 컴파일러는 블록에 약간의 새로운 아이가 보입니다. (예를 들어 이해 관계자가 너무 좋아하지 않을 수도 있습니다).

어떤 사람들은 Yui 압축기에 의해서만 맹세합니다. 나는 개인적으로 그것을 보증 할 수 없습니다.

이제 질문이 압축하는 것이 었습니다 도서관 또한 자신의 자바 스크립트 코드뿐만 아니라 이름을 바꾸거나 박탈되지 않아야하는 기호를 내보내는 데 대부분의 도구가 필요하기 때문에 분명히 더 관여합니다. 대부분의 괜찮은 압축기는 그들이 사용하지 않는 것으로 생각되는 기능을 제거합니다 (종종 도서관의 경우는 프로젝트에 묶이지 않고 분명히) 이름을 변경하여 더 짧게 만들고 문자를 적게 사용하도록 이름을 변경합니다. API는 변조하지 않습니다.

이 주제에 대한 다른 스레드도 찾아 도구의 지원 문서에서 정보를 찾을 수 있습니다. 당신은 또한보고 싶을 수도 있습니다 JSBuilder2, ERVJS (Yui Compressor 사용)에 대한 Dojo의 빌드 도구 (따라서 수축 또는 클로저 컴파일러 사용)에 대한 일종의 펜던트.

(죄송합니다. 새로운 사용자이기 때문에 하나 이상의 링크를 추가 할 수 없으므로 도구에 직접 연결할 수 없습니다.)

편집 : 압축이 버그를 도입 할 수 있고 코드가 엉망이되지 않기 때문에 디버깅을 더 쉽게 할 수 있다는 일부 답변에 표현 된 우려 사항과 관련하여 : 예, 유효한 문제입니다. 하지만:

  • GZIP 압축이 활성화되어 있어도 미니 파이어를 사용하는 경우 대역폭 측면에서 매우 크게 개선 될 것입니다 (압축기의 수명을 더 쉽게 만들어 GZIP 압축을 활용하는 법을 배울 수 있습니다.
  • 동작이 동일하게되도록 디버그 및 생산 모드에서 코드를 맛보아야합니다. 내 말은, 그것은 당신의 직업의 일부이기도합니다 ...
  • 이러한 압축기 중 일부는 한동안 주변에 있었으며 실제로 코드에 버그를 도입하지 않을 것입니다. 그들은 실제로 물건을 재구성하고 현악기를 대체하는 것입니다.
  • 일부 압축기 (예 : Dojo 빌드 시스템)에는 압축 된 출력과 압축되지 않은 출력을 모두 생성 할 수있는 옵션이있어 쿼리 매개 변수를 사용하여 디버깅 및 생산에 대한 다양한 모드를 활성화 할 수 있습니다.

JavaScript를 전혀 최소화하지 않습니다. GZIP 압축은 나에게 충분하며 오류 메시지가 여전히 유용하다는 추가적인 이점이 있습니다.

나도 Yui Compressor를 사용합니다. 프로젝트에서 사용하는 이와 같은 개미 작업이 있습니다.

<!--
YUI Compressor tasks 
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
           value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>

<target name="js.compress">
    <!-- Create min directory under js direcrtory if it doesnt exist -->
    <mkdir dir="${js-directory}/min" />

    <apply verbose="true" executable="java" parallel="false" failonerror="true">
        <fileset dir="${js-directory}" includes="*.js"/>
        <arg line="-jar"/>
        <arg path="${yuicompressor.jar}"/>
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
        <targetfile/>
    </apply>
</target>

딘 에드워드의 패커 꽤 좋은 압축 비율을 달성합니다. 지속적인 통합 프로세스에서 사용할 수있는 명령 줄 구현이 있습니다.

uglifyjs 새로운 것입니다.

uglifyjs는 Yui 압축기보다 압축되며 Google 클로저 컴파일러와 비슷합니다. 예를 들어, Google Closure Compiler의 압축 된 jQuery 버전은 UglifyJS에서 생성 된 버전보다 403 바이트에 불과합니다! uglifyjs는 또한 긴 샷으로 가장 빠르며 6 초 이상 마감을 치십시오!

또한 UglifyJS가 생성 한 코드는 Closure가 생성하는 코드보다 안전합니다. 예를 들어, Closure는 Eval 또는 {}를 다루는 방법을 모릅니다. 오류를 기록하고 어쨌든 변수 이름을 계속 바꿉니다. 이것은 분명히 코드가 깨진 것으로 이어집니다. uglifyjs에는이 문제가 없습니다.

자세한 내용은 여기를 참조하십시오.http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javaScript-compressor-for-node-js

구글 폐쇄 도구

Add-On으로 FireBug에서 디버깅을 위해 미니딩 버전을 일반 소스 코드에 매핑 할 수 있습니다.

이전에 Yui Compressor를 사용해 보았지만 오류 메시지를 제공합니다.

JSMIN을 사용하여 JavaScript를 미치는 것이 좋습니다.

http://www.crockford.com/javaScript/jsmin.html

다음은 Microsoft의 솔루션이 Visual Studio에 통합하여 프로젝트를 구축 할 때 파일을 자동으로 조정할 수있는 솔루션입니다.

설치하기 위해서:

MSI를 다운로드하십시오. http://aspnet.codeplex.com/releases/view/40584

컴퓨터가 완료된 후에 컴퓨터를 다시 시작해야 할 수도 있습니다.

사용:

.csproj 파일을 편집하고 파일 끝에 다음을 포함시킵니다 (그러나 </Project> 꼬리표):

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />

<Target Name="AfterBuild">
    <ItemGroup>
        <JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
        <CSS Include="**\*.css" Exclude="**\*.min.css" />
    </ItemGroup>
    <AjaxMin 
    JsSourceFiles="@(JS)"
    JsSourceExtensionPattern="\.js$"
    JsTargetExtension=".min.js"
    CssSourceFiles="@(CSS)"
    CssSourceExtensionPattern="\.css$"
    CssTargetExtension=".min.css"/>
</Target>

이제 프로젝트를 구축 할 때 .min.js, .min.css로 끝나지 않는 모든 CSS 및 JS 파일은 미니어링됩니다 (다른 파일을 제외하려는 "제외"속성 참조).

http://code.google.com/p/jsmin-php/

좋은 Old Doug Crockford :-) 이것의 아름다움은 캐시 컨트롤을 사용하면 필요한 경우에만 내성적으로 자동화 된 압축을 얻을 수 있다는 것입니다. 또는 내 프로젝트 중 하나에서 압축/Gzipped 파일을 출력하고 변경할 때 삭제합니다. 개발 환경의 경우, 나는 단지 미니 화 스크립트를 호출하지 않습니다.

나는 간단한 (3-4 라인) 래퍼 스크립트를 사용합니다. JavaScript :: 미니 파이어 :: xs.

다음은 빌드 중에 파일을 최소화하기 위해 Yui Compressor를 사용하는 방법을 설명하는 기사입니다. 빌드 프로세스의 일부로 JS 파일을 압축합니다

Perl의 JavaScript :: 미니 파이어를 사용합니다. 그것은 꽤 잘 작동하며 예를 들어 Perl을 사용하여 일부 문구를 교체 할 수 있습니다.

http://caja.appspot.com/tools/index HTML/CSS/JS의 세 가지를 모두 수행합니다.

https://jawr.dev.java.net/ 미니 화 및 버전 관리에 탁월합니다

온라인 압축기가 아주 좋습니다.

http://javaScriptcoppressor.com/

더 많은 양념을 원한다면 변수를 축소 할 수도 있습니다.

도움이되기를 바랍니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top