javascript - 用于版本控制和缩小 javascript 的 Maven 插件

单页 Javascript 应用程序

我已经构建了一个复杂的 ajax 驱动的单页 web 应用程序,它使用一个提供 JSON 的 RESTful 后端 web 服务。 javascript 被分成许多不同的文件,每个文件代表某种功能或组件。

虽然该服务一直在进行 alpha 测试,但我只是单独提供所有这些文件而没有缩小。但是现在我想推出一个 beta 版本,我真的需要 merge 文件、缩小它们并对其进行版本控制。我想使用 Maven 将它添加到我的构建过程中。

Javascript 文件类型

我正在使用以下“类型”的 javascript 文件,其中 #3 和 #4 是我关心的问题:

  1. 外部文件,例如从 Google CDN 提供的 jquery 和 jquery-ui。很少更改这些版本,可以手动处理。
  2. 我自己托管的 Jquery 插件,例如 fullcalendar 或 ui-layout。同样,我很少将这些更新到新版本,并且可以手动处理。
  3. 应用范围的 JavaScript 代码。分布在许多文件中并且偶尔会更改的自定义 javascript。需要加载所有这些文件才能使应用正常运行。
  4. 特定于功能的 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 文件?

最佳答案

看看yuicompressor-maven-plugin .它可以聚合各种 js(以及 css)文件,并对其进行压缩和混淆。

https://stackoverflow.com/questions/3965801/

相关文章:

build - 从 make 文件中禁用 make 内置规则和变量

ios - 使用没有代码设计的 xcodebuild 构建 iOS 应用程序

xcode - 向 Xcode 添加了运行脚本阶段,但没有任何反应

android - 错误 :Execution failed for task ':android:

c# - 缺少调试目标?

build - 如何将 Autotools 项目转换为 CMake 项目?

eclipse - 什么是最好的 Scala 构建系统?

xcode - 用于使用最新 sdk 的 xcodebuild 参数。

tfs - 如何获取 TFS 构建状态通知?

visual-studio-2012 - VS 2012 构建 Hello World : "The