我正在阅读本网站上的指南:http://blog.carbonfive.com/2014/05/05/roll-your-own-asset-pipeline-with-gulp/
我读了以下部分:
Rev这是我最喜欢使用Gulp的部分 . Rev将为您提供Asset Pipeline着名的友好app-ef62e7.js文件名输出 . 原因是你可以永远缓存它 . 新请求只会指向新文件 . CDN喜欢这个 . 使用Rev. var rev = require('gulp-rev'),使文件具有散列非常简单; gulp.task('rev',['less','scripts'],function(){return gulp.src(['dist // . css','dist // . js']) . pipe(rev( ).pipe(gulp.dest('dist')) . pipe(rev.manifest()) . pipe(gulp.dest('dist'));});查看由GitHub用❤托管的rawgulpfile.js现在文件名已经附加了哈希值!请注意我生成的摘要;看起来如下所示:{“app.css”:“app-1c1d3237.css”,“app.js”:“app-26ad0c3f.js”}查看由GitHub用❤托管的rawrev-manifest.json这里是一个一点自定义代码会发挥作用 . 当您生成index.html(或者您引用CSS / JS的任何其他位置)时,您将不得不替换摘要文件中的URL . 应该只是在您选择的框架中解析此JSON文件,或者让Gulp重写您的index.html以使用正确的文件名替换CSS / JS include .
这一切都很好,对我来说听起来不错,但如果我这样做并且Gulp为我的主要css和js文件注入了新的文件名,那么我的git版本控制系统将把它作为一个改变,每一次我更新我的资产 .
人们如何处理这个问题?
1 回答
我使用.gitignore并忽略assets目录(/ public / assets)
https://git-scm.com/docs/gitignore
更新:
Rails将为您处理文件名 . 如果您使用以下助手
<%= javascript_include_tag“application”%> <%= stylesheet_link_tag“application”%>
rails将读取清单文件,并在执行这些帮助程序时插入正确的文件名 .
做它的Rails是md5的东西:http://guides.rubyonrails.org/asset_pipeline.html#in-production
清单文件:阅读http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives的4.1 . 搜索:manifest-md5hash.json
看源代码:http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#method-i-javascript_include_tag
我编写了自己的资产应用程序助手: