您使用什么来最小化和压缩JavaScript库?
答案 0 :(得分:42)
我已经使用了YUI Compressor很长一段时间并且没有遇到任何问题,但最近开始使用Google Closure Compiler并取得了一些成功。到目前为止我对它的印象:
我已经转而使用Google Closure Compiler进行简单的“编译”模式,因为它的性能略高于YUI Compressor。我使用它比使用YUI Compressor要少得多,但是到目前为止我已经推荐了它。
另一个我尚未尝试但听起来很有希望的是Mihai Bazon's UglifyJS。
答案 1 :(得分:33)
我使用YUI Compressor。似乎能很好地完成工作!
答案 2 :(得分:22)
你有一堆可能性:
根据我的个人经验,我建议您使用Dojo SDK构建自定义构建,然后您可以配置为使用其通常的ShrinkSafe编译器或Google Closure,which they now support as well。< / p>
就压缩而言,我认为Google Closure是迄今为止产生最佳效果的产品,但我对ShrinkSafe感到满意,它有点老了,而且更强大,而Closure Compiler看起来有点像个新手在块(例如,您的利益相关者可能不太喜欢)。
但是有些人只对YUI Compressor发誓。我个人不能保证它。
现在,如果你问的是压缩库而不仅仅是你自己的JavaScript代码,它显然会更加复杂,因为你需要大多数这些工具来导出不应该的符号。重命名或剥离。最理想的压缩器将删除他们认为未使用的函数 - 通常是库中的情况,如果没有绑定到项目,显然 - 并更改名称以缩短它们并使用更少的字符 - 这也是一个问题,因为你显然想要公开API不会被篡改。
您也可以在此主题中找到其他主题,并在工具的支持文档中查找信息。 您可能还想查看JSBuilder2,这是对Dojo的Build工具(使用ShrinkSafe或Closure Compiler)的一些吊坠,用于ExtJS(使用YUI压缩器)。
(抱歉,作为新的SO用户,我无法添加多个链接,因此无法直接链接到这些工具。)
编辑:关于在一些答案中表达的担忧,压缩可能会引入错误,并且由于代码没有被破坏,它使调试变得更容易:是的,这是一个有效的问题。但是:答案 3 :(得分:12)
我根本没有最小化JavaScript:gzip压缩对我来说已经足够了,还有一个额外的好处,即错误消息仍然有用。
答案 4 :(得分:11)
我也使用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>
答案 5 :(得分:5)
Dean Edward's packer实现了一些非常好的压缩率。它具有命令行实现,允许它在持续集成过程中使用。
答案 6 :(得分:5)
UglifyJS 是一个新的。
UglifyJS压缩比YUI更好 压缩机和刚刚相提并论 谷歌闭包编译器。对于 例如,压缩版本 来自Google Closure的jQuery 编译器只减小了403个字节 比UglifyJS生成的版本 - 印象深刻! UglifyJS也是最快的一次击球,击败 关闭超过6秒!
此外,代码由 UglifyJS比代码更安全 关闭生成。例如, 关闭不知道如何处理 eval或with {} - 它只记录错误 并继续重命名变量 无论如何。显然,这导致了 破碎的代码。 UglifyJS没有 这个问题。
可在此处找到更多信息: http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javascript-compressor-for-node-js
答案 7 :(得分:4)
Google的closure工具
您可以将缩小版本映射到常规源代码,以便在Firebug中使用其附加组件进行调试。
答案 8 :(得分:3)
以下是Microsoft提供的解决方案,您可以将其集成到Visual Studio中,以便在构建项目时自动缩小文件。
安装:
从http://aspnet.codeplex.com/releases/view/40584
下载msi完成后,您可能需要重新启动计算机。
使用:
编辑.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文件将被缩小(请参阅“排除”属性以排除其他文件被缩小)。
答案 9 :(得分:3)
答案 10 :(得分:1)
http://code.google.com/p/jsmin-php/
好老Doug Crockford :-)这样做的好处在于,通过缓存控制,只有在需要时才能获得一些自动压缩。或者在我的一个项目中,我只输出压缩/ gzip文件,并在进行更改时删除它们。对于开发环境,我只是不称之为缩小脚本。
答案 11 :(得分:0)
我使用perl的JavaScript :: Minifier。它工作得很好,你可以,例如用perl替换一些短语。
答案 12 :(得分:0)
http://caja.appspot.com/tools/index执行所有三个HTML / CSS / JS。
答案 13 :(得分:0)
这篇文章描述了如何使用YUI Compressor在构建期间最小化文件:Compressing JS files as part of your build process
答案 14 :(得分:0)
我在JavaScript::Minifier::XS周围使用一个简单的(3-4行)包装脚本。
答案 15 :(得分:0)
https://jawr.dev.java.net/非常适合缩小和版本化
答案 16 :(得分:0)