在这里参加聚会真的很晚,但认为这可能会帮助仍在寻找其他答案的人:
在尝试使用YUI Compressor之后,令我失望的是它与jQuery和Prism的最新版本不兼容(我的项目需要两个主要的第三方JS库,我想将它们压缩到一个文件中)。所以我决定用 Terser,它是支持ES6 +的Uglify-JS的分支。我无法使用<exec>
任务直接运行它,但是使用Windows命令行方法至少适用于Win 10(不是说它不能正常运行,但这是一个非常简单的解决方法)。无需向Path系统变量添加任何其他内容(因为通常在安装过程中添加Node.JS)。我首先使用ANT <concat>
任务制作一个大的未压缩文件。使用<fileset>
它会保留顺序(如果重要的话,无论如何)。
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
然后使用 <exec>
任务运行任何NPM程序,例如Terser。关于此任务的Apache手册页指出,这是运行.bat文件的Windows解决方法,但实际上,它允许您几乎运行任何命令行应用程序(甚至那些<exec>
神秘地找不到的命令行应用程序)。
<exec executable="cmd">
<arg value="/c"/>
<arg value="terser"/>
<arg value="${js-big-file}" />
<arg value="-o" />
<arg value="${smaller-js-file}"/>
</exec>
整合?它是ANT构建脚本的一部分(DITA Open Toolkit插件可支持自定义JavaScript等,本质上不是Java Web应用程序,而是使用Java构建HTML5输出),因此集成只不过是添加了这些内容而已。任务转移到新目标(有关设置默认值和检查输入参数的更多代码!)。
易于启用/禁用?就我而言,我有一个传递给ANT Build的参数,以便包括构建和缩小JS文件。因此,是的,仅当我将参数设置为“是”时,它才执行此目标。在ANT构建中设置起来非常容易。
透明到目前为止,它似乎对我包含的所有JS文件没有影响。其中一些是我自己的(无论如何我都不是JS专家),并且有些是(如上所述)通用的JS库。
粉碎机 Terser,但是通过此方法,您几乎可以在命令行输入中使用任何缩小器。
缺乏功能?特塞尔仅适用于JavaScript。如果我想对我的CSS文件做同样的事情(我这样做),请使用YUI Compressor。
喜欢那样,它是一个当前活跃的项目,并具有良好的支持。另外,当前的实现(仅通过ANT <exec>
目标调用它)使我可以交换缩小器,以备不时之需。
不喜欢它需要Node.JS。请注意,对Node.JS并没有什么反对,只是这个特定项目不需要它。为此,我更喜欢使用Java .jar文件(如YUI Compressor)(我可以使用插件轻松分发该文件)。