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

标签 javascript git build maven minify

单页 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)文件,并对其进行压缩和混淆。

关于javascript - 用于版本控制和缩小 javascript 的 Maven 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3965801/

相关文章:

java - 多模块 Gradle 构建问题 - 找不到与给定名称匹配的资源

javascript - 检查成员是在实例中还是在原型(prototype)中

javascript - 在下划线中连接两个数组的最佳方法

javascript - jQueryUI 动画(颜色)不起作用

javascript - 为什么需要在对象中使用 this.property=property ?

即使文件未暂存,git 也会占用空间

eclipse - Zend Studio 9 (eclipse) 的 Git 插件不向上游推送

javascript - 在building tool `parcelJs`如何导出到全局

git - git禁止远程推送到master分支

build - FFMPEG - 构建 ubuntu 32 位 - 缺少共享库 : libspeex