node_modules设置

a.打开 node_modules\gulp-rev\index.js

第144行 manifest[originalFile] = revisionedFile; 更新为: manifest[originalFile] = originalFile + '?v=' + file.revHash;

在node_modules\rev-path\index.js 目录中第10行:改成如下:

b.打开 nodemodules\gulp-rev\nodemodules\rev-path\index.js

10行 return filename + '-' + hash + ext; 更新为: return filename + ext;

c.打开 node_modules\gulp-rev-collector\index.js

31行 if ( path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' ) !== path.basename(key) ) { 更新为: if ( path.basename(json[key]).split('?')[0] !== path.basename(key) ) {}

d.压缩处理模块JS

gulp.task('moduleJs', function () {
for (var i = 0; i < moduleJs.length; i++) {
//example:oauth_web/dist/static/js/login/login.min.js;
del(moduleJs[i].basedir + 'dist/'+'static/'+'js/'+moduleJs[i].name + '/' + moduleJs[i].name+'.min.js');
del(moduleJs[i].basedir + 'concat/'+'static/'+'js/'+moduleJs[i].name + '/' + moduleJs[i].name+'.js');
if (!moduleJs[i].deps) {
moduleJs[i].deps = [];
}
var resource = moduleJs[i].deps.concat(moduleJs[i].basedir + 'static/' + "js/" + moduleJs[i].name + '/' + moduleJs[i].name + '.js');
console.log(resource); //获取原文件的位置
gulp.src(resource)
.pipe(gulpConcat(moduleJs[i].name + '.js'))//合并所有js到模块名称.js
.pipe(gulp.dest(moduleJs[i].basedir + 'concat/' + 'static/' +'js/' + moduleJs[i].name)) //输出合并后单没有压缩模块到.js到文件夹
.pipe(rename({suffix: '.min'}))
.pipe(uglify())//压缩
.pipe(rev()) //加MD5后缀
.pipe(gulp.dest(moduleJs[i].basedir +'dist/'+'static/'+'js/'+moduleJs[i].name)) //输出
.pipe(rev.manifest()) //生成映射json文件
.pipe(gulp.dest(baseRev + moduleJs[i].basedir +'static/' + 'js/' + moduleJs[i].name));
}
});

e.压缩相应html时引入json文件添加对应的hash版本号

/**
* 引入版本号,压缩html
*/
gulp.task('miniHtml', function () {
for (var i = 0; i < moduleHtml.length; i++) {
if (!moduleHtml[i].revJs) {
moduleHtml[i].revJs = [];
}
     //引入之前生成的版本号JSON文件 var revJson = '/*.json';
        var revModuleJs = baseRev + moduleHtml[i].basedir +'static/' + 'js/' + moduleHtml[i].name + revJson;
var revModuleCss = baseRev + moduleHtml[i].basedir + 'static/'+ 'css/' + moduleHtml[i].name + revJson;
var resHtml = moduleHtml[i].basedir + moduleHtml[i].name + '.html'; //需要处理html地址
var resource = moduleHtml[i].revJs.concat([revModuleJs,revModuleCss]);
if (moduleHtml[i].revCss) {
resource = resource.concat(moduleHtml[i].revCss);
}
resource = resource.concat(resHtml);
console.log(resource);
var options = {
removeComments: true, //清除HTML注释
collapseWhitespace: true, //压缩HTML
collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input checked />
removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true, //删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true, //删除<style>和<link>的type="text/css"
minifyJS: true, //压缩页面JS
minifyCSS: true //压缩页面CSS
};
//生成合并的文件
gulp.src(resource)
.pipe(htmlreplace({
'css':{
src:'static/' + 'css/' + moduleHtml[i].name + '/' + moduleJs[i].name + '.css',
tpl:'<link rel="stylesheet" href="%s" data-res="eebbk">'
},
'js': {
src:'static/' + 'js/' + moduleHtml[i].name + '/' + moduleJs[i].name + '.js',
tpl:'<script src="%s"></script>'
}
}))
.pipe(revCollector()) //添加版本号
.pipe(gulp.dest(moduleHtml[i].basedir+'concat/')); //输出到合并的文件夹中 //生成压缩后的文件
gulp.src(resource) .pipe(htmlreplace({
'css':{
src:'static/' + 'css/' + moduleHtml[i].name + '/' + moduleJs[i].name + '.min.css',
tpl:'<link rel="stylesheet" href="%s">'
},
'js': {
src:'static/' + 'js/' + moduleHtml[i].name + '/' + moduleJs[i].name + '.min.js',
tpl:'<script src="%s"></script>'
}
}))
.pipe(revCollector()) //添加版本号
.pipe(htmlmin(options))
.pipe(rename({
prefix : "",
basename : moduleHtml[i].name,
suffix : ""
}))
.pipe(gulp.dest(moduleHtml[i].basedir+'dist/')); //输出到dist文件夹中
}
});

f.最后生成文件带有版本号的,至此完成此功能!!

添加js,css 版本号?v= hash的更多相关文章

  1. 前端静态资源版本更新与缓存之——通过gulp 在原html文件上自动化添加js、css版本号

    原理 修改js和css文件 通过对js,css文件内容进行hash运算,生成一个文件的唯一hash字符串(如果文件修改则hash号会发生变化) 替换html中的js,css文件名,生成一个带版本号的文 ...

  2. 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5

    Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...

  3. [Asp.net Mvc]为js,css静态文件添加版本号

    方式一: 思路 string version = ViewBag.Version; @Scripts.RenderFormat("<script type=\"text/ja ...

  4. MVC学习随笔----如何在页面中添加JS和CSS文件

    http://blog.csdn.net/xxjoy_777/article/details/39050011 1.如何在页面中添加Js和CSS文件. 我们只需要在模板页中添加JS和CSS文件,然后子 ...

  5. ASP.NET给前端动态添加修改 CSS样式JS 标题 关键字

    有很多网站读者能换自己喜欢的样式,还有一些网站想多站点共享后端代码而只动前段样式,可以采用动态替换CSS样式和JS. 如果是webform 开发,可以用下列方法: 流程是首先从数据中或者xml读取数据 ...

  6. asp.net后台代码动态添加JS文件和css文件的引用

    首先添加命名空间 using System.Web.UI.HtmlControls; 代码动态添加css文件的引用 HtmlGenericControl myCss = new HtmlGeneric ...

  7. ASP.NET给前端动态添加修改 CSS样式JS 标题 关键字(转载)

    原文地址:http://www.cnblogs.com/xbhp/p/6392225.html 有很多网站读者能换自己喜欢的样式,还有一些网站想多站点共享后端代码而只动前段样式,可以采用动态替换CSS ...

  8. gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号

    参考打包教程: http://www.cnblogs.com/tugenhua0707/p/4069769.html http://www.cnblogs.com/tugenhua0707/p/498 ...

  9. js 动态添加 外部js css 到head标签

    function appendJQCDN() { var head = document.head || document.getElementsByTagName('head')[0]; var s ...

随机推荐

  1. SpringBoot扩展SpringMVC自动配置

    SpringBoot中自动配置了 ViewResolver(视图解析器) ContentNegotiatingViewResolver(组合所有的视图解析器) 自动配置了静态资源文件夹.静态首页.fa ...

  2. SpringBoot整合日志

    Java日志 日志的接口层.抽象层 日志的实现 JCL(Jakarta Commons Logging) SLF4J(Simple Logging Facade for Java) Jboss-Log ...

  3. Python3 Win下安装 scipy

    没有利用Anaconda安装python库时可能遇到一些问题,例如直接 pip3 install scipy 可能报错,安装失败.原因是Scipy的安装需要依赖MKL库,官方的Numpy不包含MKL, ...

  4. caffe源码阅读(1)_整体框架和简介(摘录)

    原文链接:https://www.zhihu.com/question/27982282 1.Caffe代码层次.回答里面有人说熟悉Blob,Layer,Net,Solver这样的几大类,我比较赞同. ...

  5. mysql系列一、mysql数据库规范

    一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 表必须使用InnoDB存储引擎. 表必须 ...

  6. 配置samba文件服务器

    1.打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"--> ...

  7. SharePoint 2013 文档库“样式”变了

    有朋友反馈说文档库的样式变了. 经查证,原来有人修改了视图的"样式":库设置—视图—样式,改为默认即可. 另外,如果编辑页面,编辑web部件的属性,在"杂项"勾 ...

  8. oem 重建

    OracleDBControl启动失败to local from URL=http://your-url.co     方法: emca -deconfig dbcontrol db -repos d ...

  9. 修改tomcat的server.xml配置web项目

    <!-- VideoWeb:自己编写的web项目名 path:表示当输入访问项目.. 如果path="" URL=localhost:8080就可以访问项目了 如果path= ...

  10. vim常用

    删除空行 :g@^$@d