【问题标题】:How to handle javascript library version changes with grunt-bower-task?如何使用 grunt-bower-task 处理 javascript 库版本更改?
【发布时间】:2014-07-29 05:15:26
【问题描述】:

我正在使用 grunt + bower + grunt-bower-task 插件来管理 javascript 库依赖项。

假设我已经用凉亭安装了jquery

bower install jquery --save

和 grunt-bower-task:

bower: {
  install: {
    options: {
      targetDir: './public/lib',
      layout: 'byComponent',
      install: true,
      verbose: true,
      cleanTargetDir: true,
      cleanBowerDir: false,
      bowerOptions: {}
    }
  }
}

运行grunt bower后,jquery会被复制到:

/public/lib/jquery/jquery.js

所以客户端会用url获取jquery:

http://somedomain.com/public/lib/jquery/jquery.js

但是我有一个问题,如果我更改了 jquery 版本怎么办?

假设我使用了另一个带有 bower 的查询版本,但它仍会被复制到相同的位置,并且用户将使用相同的 url 获取它。如果我为其添加了缓存头,用户将不会在过期之前从服务器获取新的 jquery.js 代码。

如何解决这个问题?

我想如果我们可以在运行grunt bower时将版本添加到文件名中,那将修复它,例如

http://somedomain.com/public/lib/jquery/jquery-1.8.js

但是我在grunt-bower-task中找不到这样的功能。

【问题讨论】:

    标签: gruntjs bower


    【解决方案1】:

    我会在 bower.json 文件中处理库版本控制。每当您调用bower install 命令时,您的版本都应该安装.. 类似这样的

     "dependencies": {
        "angular": "~1.2.21",
        "jquery": ">=2.1.1"
     },  
     "resolutions": {
       "jquery": ">=2.1.1"
     }
    

    但是现在无论版本如何,它们都是 jquery.js。所以现在你想要做的是添加某种类型的缓存破坏策略,这将迫使浏览器下载最新版本的脚本。网上有大量关于缓存清除 javascript 的资源,所以我不会在这里重复这些,但是有些繁重的任务可以帮助你喜欢 this one

    我提出的一个稍微偏离主题的建议是将您的外部脚本连接并缩小到一个 js 文件中,也许另一个用于您的应用程序脚本。随着您的一个或多个外部库发生变化,缓存清除技术将强制浏览器获取您的依赖脚本的最新版本。

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多