用于版本控制和缩小 javascript 的 Maven 插件
Posted
技术标签:
【中文标题】用于版本控制和缩小 javascript 的 Maven 插件【英文标题】:Maven plugin for versioning and minifying javascript 【发布时间】:2011-04-27 07:39:53 【问题描述】:单页 javascript 应用程序
我已经构建了一个复杂的 ajax 驱动的单页 web 应用程序,它使用一个提供 JSON 的 RESTful 后端 web 服务。 javascript 被分成许多不同的文件,每个文件代表某种功能或组件。
虽然该服务一直处于alpha 测试中,但我只是单独提供所有这些文件而没有缩小。但是现在我想推出一个 beta 版本,我真的需要合并文件、缩小它们并对其进行版本控制。我想使用 Maven 将它添加到我的构建过程中。
Javascript 文件类型
我正在使用以下“类型”的 javascript 文件,其中 #3 和 #4 是我关心的问题:
-
外部文件,例如从 Google CDN 提供的 jquery 和 jquery-ui。很少更改这些版本,可以手动处理。
我自己托管的 Jquery 插件,例如 fullcalendar 或 ui-layout。同样,我很少将这些更新到新版本,并且可以手动处理。
应用程序范围的 JavaScript 代码。分布在许多文件中并且偶尔会更改的自定义 javascript。需要加载所有这些文件才能使应用正常运行。
特定于功能的 JavaScript 代码。请求特定功能时按需加载的自定义 javascript。此代码可能会经常更改,并且不会在启动时加载。
构建目标
我想在构建过程中执行以下操作:
将所有类型 3 的 JavaScript 文件连接在一起,缩小它们,并保存为带有版本号的单个文件。例如:app-2.0.6.min.js
,其中 2.0.6 是 maven 项目版本。
所有类型 4 文件都应单独缩小并保存为名称中带有版本号的单独文件。例如:feature-abc-56ab32de29.min.js
,其中 56ab32de29 是该特定文件的版本号。
使用<script>
标记更新html 文件以指向具有正确版本号的javascript 文件。
更新加载类型 4 功能 JavaScript 文件的 JavaScript 文件以指向正确的版本。
问题
是否有 maven 插件可以帮助连接?
是否有 maven 插件可以帮助缩小?理想情况下,我想使用 Google Closure Compiler,但如果更简单,我会与其他人一起使用。
是否有 maven 插件可以帮助进行版本控制?
有没有办法让 type 4 javascript 文件有独立的版本号?理想情况下,如果文件在 2.0.5 和 2.0.6 版本之间没有变化,则用户无需下载新版本,他们的缓存版本就可以正常工作。我正在使用 GIT 进行源代码控制,那么有没有办法使用文件的 GIT 哈希码进行版本控制?
是否有一种解决方案可以压缩常规 HTML 文件中内联的 javascript 而不会杀死 HTML?
是否有一种解决方案可以同时压缩和版本化我的 CSS 文件?
【问题讨论】:
您尝试过接受的答案吗?这一切对你来说是怎样的?我正在开发一个与您的高级架构相同的项目(我想这是当今的常识范式)。 @Ates:实际上,没有。我还没有尝试过任何一个答案。忙于项目的其他方面。希望很快能做到这一点。如果你尝试一下,你能发布你的经验吗? 我找到了一个特定于 Rails 的工具,它看起来可以满足我的大部分需求。当然,它不是 maven 工具,我也没有使用 Rails,但值得一试:github.com/documentcloud/jammit @Ates:我已经尝试过 yuicompressor-maven-plugin 并且效果很好。它还有一个 jslint 目标,您可以使用它来验证您的 js 文件。 【参考方案1】:这是一个针对此任务的全新 Maven 插件:http://mojo.codehaus.org/webminifier-maven-plugin/
【讨论】:
您的链接已损坏。有没有更新的替代品?【参考方案2】:我已经成功地将 RequireJS 优化(使用 Google Closure 编译器 + 进行连接)合并到 Maven 环境中(用于单页 JS 应用程序)。有关详细信息,请参阅我的问题和后续答案:RequireJS Compilation in Maven project with external JS dependencies
您可能会对此进行扩展以对缩小的 JS 工件进行版本化和存档。
【讨论】:
【参考方案3】:看看yuicompressor-maven-plugin。它可以聚合各种 js(以及 css)文件,也可以对它们进行压缩和混淆。
【讨论】:
感谢您的指点。对文件进行版本控制有什么想法吗? 使用yuicompressor-maven-plugin的后缀参数。例如以上是关于用于版本控制和缩小 javascript 的 Maven 插件的主要内容,如果未能解决你的问题,请参考以下文章
javascript高手请进!关于就js控制网页图片放大缩小的问题
使用 VS2010 缩小 JavaScript 并附加版本号