gus*_*afc 121 javascript java automation minify
我很想知道您希望如何为Java Web应用程序自动化Javascript缩小.以下是我特别感兴趣的几个方面:
这将主要作为我未来项目的参考(希望其他SOer也会发现它的信息),所以各种工具都很有趣.
(请注意,这不是关于哪个minifier最好的问题.我们已经有很多这样的.)
gus*_*afc 64
如果您在此主题中发布新内容,请编辑此帖子以链接到您的帖子.
apply任务(使用YUI Compressor)ser*_*erg 13
我们正在使用Ant任务在生成构建期间使用YUICompressor缩小js文件,并将结果放入一个单独的文件夹中.然后我们将这些文件上传到Web服务器.您可以在此博客中找到YUI + Ant集成的一些很好的示例.
这是一个例子:
<target name="js.minify" depends="js.preprocess">
<apply executable="java" parallel="false">
<fileset dir="." includes="foo.js, bar.js"/>
<arg line="-jar"/>
<arg path="yuicompressor.jar"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="*-min.js"/>
<targetfile/>
</apply>
</target>
Run Code Online (Sandbox Code Playgroud)
小智 12
我认为这项工作最好和最合适的工具之一是wro4j.请查看https://github.com/wro4j/wro4j
它可以满足您的一切需求:
可以在调试和生产模式下运行.只需指定它应该处理/预处理的所有文件,然后完成其余的工作.
您可以简单地包含合并,缩小和压缩资源,如下所示:
<script type="text/javascript" src="wro/all.js"></script>
Run Code Online (Sandbox Code Playgroud)
小智 8
我为Google Closure编译器和Yahoo压缩器编写了ant宏,并将此文件包含在不同的Web项目中.
<?xml version="1.0" encoding="UTF-8"?>
<!-- CSS and JS minifier. -->
<!DOCTYPE project>
<project name="minifier" basedir=".">
<property name="gc" value="compiler-r1592.jar" />
<property name="yc" value="yuicompressor-2.4.6.jar" />
<!-- Compress single js with Google Closure compiler -->
<macrodef name="gc-js">
<attribute name="dir" />
<attribute name="src" />
<sequential>
<java jar="${gc}" fork="true">
<!--
- - compilation_level WHITESPACE_ONLY | SIMPLE_OPTIMIZATIONS | ADVANCED_OPTIMIZATIONS
Specifies the compilation level to use. Default: SIMPLE_OPTIMIZATIONS
- - warning_level QUIET | DEFAULT | VERBOSE
Specifies the warning level to use.
-->
<arg line="--js=@{dir}/@{src}.js" />
<arg line="--js_output_file=@{dir}/@{src}-min-gc.js" />
</java>
</sequential>
</macrodef>
<!-- Compress single js with Yahoo compressor -->
<macrodef name="yc-js">
<attribute name="dir" />
<attribute name="src" />
<sequential>
<java jar="${yc}" fork="true">
<arg value="@{dir}/@{src}.js" />
<arg line="-o" />
<arg value="@{dir}/@{src}-min-yc.js" />
</java>
</sequential>
</macrodef>
<!-- Compress all js in directory with Yahoo compressor -->
<macrodef name="yc-js-all">
<attribute name="dir" />
<sequential>
<apply executable="java" parallel="false">
<fileset dir="@{dir}" includes="*.js" excludes="*-min*.js" />
<arg line="-jar" />
<arg path="${yc}" />
<srcfile />
<arg line="-o" />
<mapper type="glob" from="*.js" to="@{dir}/*-min-yc.js" />
<targetfile />
</apply>
</sequential>
</macrodef>
<!-- Compress all css in directory with Yahoo compressor -->
<macrodef name="yc-css-all">
<attribute name="dir" default="${build.css.dir}" />
<sequential>
<apply executable="java" parallel="false">
<fileset dir="@{dir}" includes="*.css" excludes="*-min*.css" />
<arg line="-jar" />
<arg path="${yc}" />
<arg line="-v --line-break 0" />
<srcfile />
<arg line="-o" />
<mapper type="glob" from="*.css" to="@{dir}/*-min.css" />
<targetfile />
</apply>
</sequential>
</macrodef>
</project>
Run Code Online (Sandbox Code Playgroud)
集成:<import file="build-minifier.xml" />在build.xml中,然后像往常一样调用ant任务:<gc-js dir="${build.js.dir}" src="prototype" /> <yc-js-all dir="${build.js.dir}" />
选择两个缩小器:Google Closure编译器和Yahoo压缩器,你应该手动下载它们并放在xml文件附近
Minifiers跳过已经压缩的文件(以...结尾-min*)
通常我会创建三个版本的脚本:未压缩(例如prototype.js)用于调试,使用闭包编译器(prototype-min-gc.js)压缩生产服务器,使用Yahoo(prototype-min-yc.js)进行压缩以进行故障排除,因为闭包编译器使用风险优化并且有时会生成无效的压缩文件而Yahoo压缩器更安全
Yahoo压缩器可以用单个宏缩小dir中的所有文件,Closure编译器不能
我试过两种方法:
当然后一种解决方案更好,因为它不会在运行时消耗资源(我的webapp使用谷歌应用程序引擎)并且它不会使您的应用程序代码复杂化.因此,在以下答案中假设后一种情况:
它是如何整合的?它是构建工具,servlet过滤器,后处理WAR文件的独立程序或其他东西的一部分吗?
使用maven
是否容易启用和禁用?尝试调试缩小的脚本是非常不可靠的,但是对于开发人员来说,测试缩小不会破坏任何东西也很有用.
你只有在组装最后的战争时激活它; 在开发模式下,您会看到资源的未压缩版本
它是否透明地工作,或者它在我的日常工作中是否有任何副作用(除了缩小中固有的那些)?
绝对
它使用哪种缩放器?
YUI压缩机
它缺少你能想到的任何功能吗?
不,它非常完整且易于使用
你喜欢它什么?
它与我最喜欢的工具(maven)集成,插件位于中央存储库(一个优秀的maven公民)
| 归档时间: |
|
| 查看次数: |
67539 次 |
| 最近记录: |