Gulp:静态资源(css,js)版本控制

为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源;
然后涉及到的html模板里的src也要做相应的修改,静态资源需要优化(压缩)

文件目录结构

html模板文件

<html>
<head>
    <link rel="stylesheet" href="../styles/one.css">
    <link rel="stylesheet" href="../styles/two.css">
</head>
<body>
    <script type="text/javascript" src="../scripts/one.js"></script>
    <script type="text/javascript" src="../scripts/two.js"></script>
</body>
</html>

gulp配置文件:gulpfile.js

var gulp = require(‘gulp‘),
    minifyCss = require(‘gulp-minify-css‘),
    jshint = require(‘gulp-jshint‘),
    uglify = require(‘gulp-uglify‘),
    clean = require(‘gulp-clean‘),
    rev = require(‘gulp-rev‘),
    revCollector = require(‘gulp-rev-collector‘);

//清空文件夹,避免资源冗余
gulp.task(‘clean‘,function(){
    return gulp.src(‘dist‘,{read:false}).pipe(clean());
});

//css文件压缩,更改版本号,并通过rev.manifest将对应的版本号用json表示出来
gulp.task(‘css‘,function(){
    return gulp.src(‘app/styles/*.css‘)
    .pipe(minifyCss())
    .pipe(rev())
    .pipe(gulp.dest(‘dist/app/styles/‘))
    .pipe(rev.manifest())
    .pipe(gulp.dest(‘dist/rev/css‘))
});

//js文件压缩,更改版本号,并通过rev.manifest将对应的版本号用json表示出
gulp.task(‘js‘,function(){
    return gulp.src(‘app/scripts/*.js‘)
    .pipe(jshint())
    .pipe(uglify())
    .pipe(rev())
    .pipe(gulp.dest(‘dist/app/scripts/‘))
    .pipe(rev.manifest())
    .pipe(gulp.dest(‘dist/rev/js‘))
});

//通过hash来精确定位到html模板中需要更改的部分,然后将修改成功的文件生成到指定目录
gulp.task(‘rev‘,function(){
    return gulp.src([‘dist/rev/**/*.json‘,‘app/pages/*.html‘])
    .pipe( revCollector() )
    .pipe(gulp.dest(‘dist/app/pages/‘));
});

  

task执行顺序

构建后的目录结构

构建后的html模板文件

<html>
<head>
    <link rel="stylesheet" href="../styles/one-970d7f6a33.css">
    <link rel="stylesheet" href="../styles/two-045a666e4a.css">
</head>

<body>
    <script type="text/javascript" src="../scripts/one-d89f951793.js"></script>
    <script type="text/javascript" src="../scripts/two-42f73556d2.js"></script>
</body>
</html>
时间: 2024-10-11 03:57:51

Gulp:静态资源(css,js)版本控制的相关文章

【转载】IIS7.5(经典模式)访问静态资源(.css和.js文件)提示:未能执行 URL

IIS7.5(经典模式)静态资源(.css和.js文件)提示:未能执行 URL “/”应用程序中的服务器错误. 未能执行 URL. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpException: 未能执行 URL. 源错误: 执行当前 Web 请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息. 堆栈跟踪: [HttpExce

关于WEB-INF目录下的静态资源(js、css、img)的访问

首先,需要明确的是WEB-INF目录是被保护起来的,其下的jsp页面不能直接运行,只能通过控制器跳转来访问:而同样在此目录下的静态资源(js.css.img)也不能被WEB-INF目录外的其他文件直接引用. WEB-INF下的目录结构如图: jsp文件夹下放的是jsp文件,static文件夹下放的是css,js,img等静态资源: 由于jsp文件夹与static文件夹都在WEB-INF目录下,故jsp文件夹下的jsp引入某js可通过相对路径访问: <script src="../stati

百度静态资源(JS)公共库

     例如: chosen http://apps.bdimg.com/libs/chosen/1.1.0/chosen.jquery.min.js classlist http://apps.bdimg.com/libs/classlist/2014.01.31/classList.min.js cookies.js http://apps.bdimg.com/libs/Cookies.js/0.4.0/cookies.min.js dojo http://apps.bdimg.com/l

Django 模板中引用静态资源(js,css等)

Django 模板中免不了要用到一些js和CSS文件,查了很多网页,被弄得略晕乎,还是官网靠谱,给个链接大家可以自己看英文的. https://docs.djangoproject.com/en/1.6/howto/static-files/ 大致步骤是这样的: 1.确保setting.py里的installed_apps中包括了django.contrib.staticfiles,没有的话大家给添上就行. 2.同样是在setting.py里面进行添加,我们需要添加静态资源相关的配置.可以这么写

静态资源(JS/CSS)存储在localStorage

一.简单了解SEO SEO由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”.SEO是指从自然搜索结果获得网站流量的技术和过程. 搜索引擎不优化的网站分为以下特征: 1.网页中大量采用图片或者Flash等富媒体(Rich Media)形式,没有可以检索的文本信息,而SEO最基本的就是文章SEO和图片SEO: 2.网页没有标题,或者标题中没有包含有效的关键词: 3.网页正文中有效关键词比较少(最好自然而重点分布,不需要特别的堆砌关键词): 4.网站导航

html 如何访问 jar 包里面的静态资源(js、css、字体等)

前言:最近两天在尝试写一个工具 jar 包,里面包含后台处理的 java 代码,包含前端 html.js.css.字体文件等,过程中解决了访问 jar 包里的静态资源问题,所以记录下来. 附:自己的一个 jar 包源码 https://github.com/yuleGH/querydb 方式一: 最开始采用阿里巴巴的源码 druid 的做法,使用一个 servlet,然后所有的请求经过这个 servlet,如果是文件,就读取到文件, 返回给前端. 这种方式经实现,没问题.不过感觉是有点影响性能.

SpringMVC 静态资源CSS,JS访问不了

问题描述: 程序数据都已经查询出来了,但是加载不了 css.js.图片等资源文件.当在浏览器上直接输入某个css文件的路径时,直接得到404错误. 问题产生原因: <url-pattern>/</url-pattern> 这表示这个servlet 拦截了所有的请求,包括css,js等.所以出现上面描述的情况. 解决办法(以下全部根据网上资料整理而成): 解决方案1: step1:在 webapp下建立static 文件夹,并在 static 文件夹里面建立css 文件夹,然后建立对

gulp静态资源构建、压缩、版本号添加

公司移动端商城使用前后分离方案,前台nginx静态文件,js使用requirejs模式,使用gulp压缩添加版本号时发现问题, 问题1.在公共的js配置中,引用的路径是写死的,缓存会一直存在. 解决方案是添加 urlArgs 构建时用shell脚本替换 'ttversion'为一个随机数值,我用的是当前时间. 问题2.其他模块引用的是common,那common.js不变的话,缓存会一直存在. 解决方案:还是用shell脚本,首先更改common.js为common_随机数.js,再更改所有引用

从零开始学JAVA(08)-使用SpringMVC4 Restful 风格引用静态文件 css/js/png

在写完helloworld后想给网页加点样式(*.css),结果怎么也显示不了,百度了很多种方法后试行尝试,试验成功并记录下来,方便以后查看. 时隔两年,继续学习JAVA,太久没学了,忘记得差不多,还好以前写的helloworld,还能用. 一.关于开发环境 eclipse-jee-neon-1a-win32 Jdk 1.8u112 (32位版本) SpringMVC 4.3.4.RELEASE apache-tomcat-8.5.8 二.helloworld.jsp文件中的引用的样式表为 st