`
mutongwu
  • 浏览: 449810 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

gulp下静态资源的合并、压缩、MD5后缀

阅读更多
var gulp = require('gulp');
var RevAll = require('gulp-rev-all');
var uglify = require('gulp-uglify');
var filter = require('gulp-filter');
var csso = require('gulp-csso');
var useref = require('gulp-useref');


gulp.task('default', function () {

	var jsFilter = filter("**/*.js");
  	var cssFilter = filter("**/*.css");
  	var htmlFilter = filter('**/*.html');

	var assets = useref.assets();

    var revAll = new RevAll({ 

    	//不重命名文件
    	dontRenameFile: ['.html'] ,

    	//无需关联处理文件
    	dontGlobal: [ /^\/favicon.ico$/ ,'.bat','.txt'],

    	//该项配置只影响绝对路径的资源
    	prefix: 'http://s0.static.server.com' 
    });

    return gulp.src(['staticPreprocessing/src/**'])
        
        //合并html里面的js/css
        .pipe(htmlFilter)
        .pipe(assets)
        .pipe(assets.restore())
        .pipe(useref())
        .pipe(htmlFilter.restore())

		//压缩js
        .pipe(jsFilter)
        .pipe(uglify()) 
        .pipe(jsFilter.restore())

        //压缩css
        .pipe(cssFilter)
        .pipe(csso())
        .pipe(cssFilter.restore())

    	//加MD5后缀
        .pipe(revAll.revision())

        //输出
        .pipe(gulp.dest('staticPreprocessing/dist'))

        //生成映射json文件
        .pipe(revAll.manifestFile())
        .pipe(gulp.dest('staticPreprocessing/dist'));
});

gulp.task('watch', function () {
   gulp.watch('staticPreprocessing/src/**', ['default']);
});





  • 大小: 133.3 KB
1
1
分享到:
评论
3 楼 ptz19 2015-12-01  
请问,如果把合并前的文件,不要dest 目标目录来。
如: js目录下,有a.js ,b.js 合并后comb.js ,但a.js,b.js也打包出去了
2 楼 zhouzq1008 2015-09-10  
楼主,还有个问题,<a href="">href里html也被修改了引用

这样写就好了
var revAll = new RevAll({
 
        dontRenameFile: ['.html'],

        dontGlobal: [ /^\/favicon.ico$/ ,'.bat','.txt'], 
           //不去跟新html的引用
        dontUpdateReference: ['.html']
  });
再次感谢楼主分享,帮我大忙了
1 楼 zhouzq1008 2015-09-10  
感谢楼主,用到了您的代码, 但现在好像有改动 否则会报错:

修改如下
.pipe(htmlFilter.restore())  -->  .pipe(htmlFilter.restore) 

jsFilter  /cssFilter 同理

也就说最新版的filter 用法变了

相关推荐

    gulp打包及发布静态资源流程

    总结,`gulp`是一个强大的静态资源管理和构建工具,通过编写简单任务脚本,可实现代码编译、压缩、合并、发布等一系列自动化流程。`gulp-package-hugin-demo-master`项目就是一个很好的学习案例,通过阅读和实践,你...

    gulp静态资源发布实例.pdf

    使用gulp 插件完成静态资源发布,发布资源包括 css js img等资源发布.自动对比静态资源生成版号,添加到资源链接上

    基于gulp的静态页面构建工具

    在现代Web开发中,构建工具扮演着至关重要的角色,它们能自动化处理许多繁琐的任务,如文件编译、压缩、合并、版本控制等。基于gulp的静态页面构建工具就是这样一个高效的工作流解决方案,它使得前端开发者能够更加...

    gulp插件解决模板和静态资源编译后相对路径定位的问题

    在现代Web开发中,构建工具如Gulp.js扮演着至关重要的角色,它们自动化了许多重复的任务,比如文件合并、压缩、预处理以及资源路径修正。在标题和描述中提到的“gulp插件解决模板和静态资源编译后相对路径定位的问题...

    Gulp编译、合并、压缩以及Browsersync示例代码

    **Gulp编译、合并与压缩前端资源:** Gulp是一个基于Node.js的自动化构建工具,它可以帮助开发者实现前端资源的编译、合并、压缩等一系列自动化任务,提高工作效率。在这个项目中,`Landing`文件夹很可能是项目的主...

    Gulp编译、合并、压缩,以及Browsersync实时刷新教程示例代码

    【Gulp编译、合并、压缩与Browsersync实时刷新】是前端开发中常见的工作流程,用于提升开发效率和优化项目资源。Gulp是一个基于任务的构建工具,它允许开发者编写自定义的任务来自动化诸如CSS预处理器编译、...

    使用gulp添加时间戳,压缩css、js

    对于"使用gulp添加时间戳"这个需求,通常是为了确保浏览器能够强制刷新缓存,避免旧的静态资源被使用。`gulp`中可以使用`gulp-rename`插件来实现这个功能。例如: ```javascript const gulp = require('gulp'); ...

    gulp-rev-appendMd5Ver:gulp 插件,为jsp和html文件中到静态资源添加md5版本号

    `gulp-rev-appendMd5Ver`插件的作用是在静态资源(例如CSS、JavaScript、图片等)的URL后面附加一个唯一的MD5哈希值,这个哈希值是根据文件内容计算出来的。当文件内容改变时,哈希值也会随之改变。这样,当更新了...

    gulp的一些用法cssjsimg打包合并压缩

    在"gulp的一些用法css、js、img打包合并压缩"这个主题下,我们将关注以下关键知识点: 1. **安装和配置**:在开始使用`gulp`之前,需要确保已安装Node.js环境,并全局安装`gulp-cli`。然后,在项目根目录下初始化`...

    前端开发js静态资源压缩文件

    在前端开发中,JavaScript作为主要的开发语言,其性能...开发者需要结合合适的工具和策略,如代码压缩、模块打包、Tree Shaking、延迟加载等,确保在不影响功能的前提下,实现资源的高效利用,提供快速流畅的用户体验。

    前端开源库-gulp-md5

    在前端开发中,特别是当项目采用静态资源版本化策略时,gulp-md5库扮演着重要的角色。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它可以将任意长度的数据转化为固定长度的哈希值,通常用于数据...

    gulp图片压缩

    在现代Web开发中,优化资源加载速度是提升用户体验的关键因素之一。图片作为网页的主要组成部分,其大小直接影响页面的加载速度。...通过熟练掌握Gulp图片压缩的使用,开发者可以更高效地管理和优化项目中的图片资源。

    gulp 压缩 demo

    在该文件中,引入 `gulp` 和你需要的插件,比如 `gulp-clean-css`(用于压缩 CSS),`gulp-uglify`(用于压缩 JavaScript),以及 `gulp-concat`(用于合并文件): ```javascript const gulp = require('gulp'); ...

    gulp-wind-assets-md5:版本化 html 和 css 中的静态文件

    gulp-wind-assets-md5 版本化 html 和 css 中的静态文件安装使用 NPM 安装包: npm install gulp-wind-assets-md5 用法 var windmd5 = require ( 'gulp-wind-assets-md5' ) ;gulp . task ( 'windmd5' , function ( )...

    一个支持编译sass编译ES6压缩静态资源自动添加浏览器前缀实时编译的用于传统MVC项目的gulp工作流

    gulp是一个基于Node.js的自动化任务运行器,它允许开发者自定义一系列的任务来简化前端开发流程,例如编译Sass、转换ES6到ES5、压缩静态资源以及自动添加浏览器兼容性前缀。 标题中的“支持编译Sass”指的是使用...

    gulp-replace-md5:一个用 file-md5 替换静态文件 url 的 gulp 插件

    一个用 file-md5 替换静态文件 url 的 gulp 插件。 用法 var gulp = require ( "gulp" ) , gulpReplaceMd5 = require ( "gulp-replace-md5" ) ; gulp . task ( "replaceMd5" , function ( ) { return gulp . src...

    狂神说javaweb实战静态资源.rar

    - 压缩合并:减少HTTP请求次数,提高加载速度,可通过工具如Webpack、Gulp等实现。 3. **静态资源的访问**: - 直接访问:浏览器通过URL直接获取,如`http://example.com/css/style.css`。 - 使用模板引擎:...

    css静态资源压缩文件

    本话题聚焦于CSS静态资源的压缩文件,这是前端性能优化的重要环节,旨在减小文件大小,提高页面加载速度,进而提升用户体验。 首先,我们要理解为什么需要对CSS进行压缩。原始的CSS文件往往包含了大量的空格、注释...

    gulp自动打包工具

    例如,我们可以使用`gulp-sass`编译SASS文件,`gulp-babel`转译ES6代码,`gulp-uglify`压缩JavaScript,`gulp-htmlmin`压缩HTML,以及`gulp-rev`和`gulp-rev-replace`来实现文件名的哈希替换,以实现静态资源的缓存 ...

    基于gulp合并压缩Seajs模块的方式说明

    虽然在npm上并没有特别流行的专门用来做Sea.js模块合并压缩的gulp插件,但gulp-seajs-transport和gulp-seajs-concat这两个插件可以解决这个问题。gulp-seajs-transport插件用于在gulp流程中处理Sea.js的模块依赖和...

Global site tag (gtag.js) - Google Analytics