Gruntjs 如何使用grunt bower任务处理javascript库版本更改?

Gruntjs 如何使用grunt bower任务处理javascript库版本更改?,gruntjs,bower,Gruntjs,Bower,我正在使用grunt+bower+插件来管理javascript库依赖项 假设我已使用bower安装了jquery: bower install jquery --save 通过grunt bower任务: bower: { install: { options: { targetDir: './public/lib', layout: 'byComponent', install: true, verbose: true,

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

假设我已使用bower安装了
jquery

bower install jquery --save
通过grunt bower任务:

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任务中找不到这样的函数

我将在bower.json文件中处理库版本控制。无论何时调用
bower install
命令,都应该安装您的版本。。像这样的

 "dependencies": {
    "angular": "~1.2.21",
    "jquery": ">=2.1.1"
 },  
 "resolutions": {
   "jquery": ">=2.1.1"
 }
但是现在不管版本如何,它们都是jquery.js。因此,现在您要做的是添加一些类型的缓存破坏策略,这将迫使浏览器下载最新版本的脚本。关于破坏缓存的javascript在线有很多资源,所以我在这里不再赘述,但是有一些繁重的任务可以帮助您喜欢

我提出的一个稍微偏离主题的建议是,将外部脚本压缩并缩小为一个js文件,或者为应用程序脚本压缩另一个js文件。当一个或多个外部库发生更改时,缓存破坏技术将强制浏览器获取依赖脚本的最新版本