草庐IT

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

coder 2023-04-24 原文

单页 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/

有关javascript - 用于版本控制和缩小 javascript 的 Maven 插件的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  3. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  4. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  5. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  6. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  7. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  8. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  9. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  10. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

随机推荐