var gulp = require('gulp'),
cssmin = require('gulp-clean-css'), //压缩css文件
concat = require('gulp-concat'), //合并js文件
jsmin = require('gulp-uglify'), //压缩js文件
imgmin = require('gulp-imagemin'), //图片压缩
rename = require('gulp-rename'), //文件重命名
jshint = require('gulp-jshint'), //js文件检查
rev = require('gulp-rev'), //- 对文件名加MD5后缀
revCollector = require('gulp-rev-collector'), //路径替换
connect = require('gulp-connect'); //配置本地服务器 //#########文件监听及自动刷新网页start#################
gulp.task('connect', function () {
connect.server({
host: 'localhost', //地址,可不写,不写的话,默认localhost
port: 3000, //端口号,可不写,默认8000
root: './', //当前项目主目录
livereload: true //自动刷新
});
}); gulp.task('html', function () {
gulp.src('./bill/*.html')
.pipe(connect.reload());
}); gulp.task('watch', function () {
gulp.watch('./bill/css/*.css', ['html']); //监控css文件
gulp.watch('./bill/js/*.js', ['html']); //监控js文件
gulp.watch(['./bill/*.html'], ['html']); //监控html文件
}); gulp.task('server', ['connect', 'watch']); //#########文件监听及自动刷新网页end ################# gulp.task('Cssmin', function () {
gulp.src("bill/css/common.css")
.pipe(rename({suffix: '.min'}))
.pipe(cssmin({dubug: true}, function (details) {
console.log(details);
console.log(details.name + '(originalSize): ' + details.stats.originalSize);
console.log(details.name + '(minifiedSize): ' + details.stats.minifiedSize);
}))
.pipe(rev())
.pipe(gulp.dest("bill/css"))
.pipe(rev.manifest()) //- 生成一个rev-manifest.json
.pipe(gulp.dest('bill/css'));
}); gulp.task('Jsmin', function () {
gulp.src("bill/js/common.js")
.pipe(rename({suffix: '.min'}))
.pipe(jsmin())
.pipe(rev())
.pipe(gulp.dest("bill/js"))
.pipe(rev.manifest()) //- 生成一个rev-manifest.json
.pipe(gulp.dest('bill/js'));
}); gulp.task('Imgmin', function () {
gulp.src("src/img/*.jpg")
.pipe(imgmin({
optimizationLevel: 5, //类型:Number 默认:3 取值范围:0-7(优化等级)
progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染
multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化
}))
.pipe(gulp.dest("dist/img"));
}); gulp.task('rev', function () {
gulp.src(['./bill/**/*.json', "./bill/index.html"])//- 读取 rev-manifest.json 文件以及需要进行替换的文件
.pipe(revCollector(
{
replaceReved: true,
dirReplacements: {
'css': 'css',
'js': 'js'
}
}
))//- 执行文件名的替
.pipe(gulp.dest('./bill')); //- 替换后的文件输出的目录
}); //执行配置任务
gulp.task('default', ['Cssmin', 'Jsmin', "rev"], function () {
// gulp.start('testJsmin');
});

  

我的gulp.js清单的更多相关文章

  1. Gulp.js - 简单、直观的自动化项目构建工具

    Gulp.js 是一个简单.直观的构建系统.崇尚代码优于配置,使复杂的任务更好管理.通过结合 NodeJS 的数据流的能力,你能够快速构建.通过简单的 API 接口,只需几步就能搭建起自己的自动化项目 ...

  2. Gulp.js简介

    Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必 ...

  3. “流式”前端构建工具——gulp.js 简介

    Grunt 一直是前端领域构建工具(任务运行器或许更准确一些,因为前端构建只是此类工具的一部分用途)的王者,然而它也不是毫无缺陷的,近期风头正劲的 gulp.js 隐隐有取而代之的态势.那么,究竟是什 ...

  4. gulp.js 的安装以及使用

    首先:电脑需要安装 Node.js 一个大绿色的安装按钮,点击就可以. 但还是推荐,点击download选中一款适合电脑配置的版本. Node安装过程,就是下一步 and 下一步~~ 测试手否安装成功 ...

  5. 前端构建工具 Gulp.js 上手实例

    在软件开发中使用自动化构建工具的好处是显而易见的.通过工具自动化运行大量单调乏味.重复性的任务,比如图像压缩.文件合并.代码压缩.单元测试等等,可以为开发者节约大量的时间,使我们能够专注于真正重要的. ...

  6. [翻译]Gulp.js简介

    我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必须反复执行的.如 新 ...

  7. exactly the kind of division of tasks that Gulp.js is built on

    The results are then passed to a reporter function that displays the results of the code analysis in ...

  8. gulp.js实现less批量实时编译

    问题描述: 在之前一直用Koala编译less文件,但本人感觉Koala用起来非常麻烦,好像不能做多个less文件的批量的编译:因为目前项目也没有用到webpack,我的less是通过vs code ...

  9. Browsersync + Gulp.js

    1.安装 Browsersync 和 依赖包 Gulp npm install browser-sync gulp --save-dev 2.gulpfile.js var gulp = requir ...

随机推荐

  1. l5-repository基本使用--结合使用artisan

    一.从头开始创建 1.执行以下artisan: php artisan make:entity Student 如果某个文件已经存在,则不会创建新的文件去覆盖原有的文件,案例如下: 2.修改model ...

  2. (二十三)Python 3 文件操作

    文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有三种: 只读模式(默认) 只写模式(不可读,不存在则创建,存在则覆盖) 追加模式(可读,不存在则 ...

  3. Python之 七级字典查询

    # -*- coding:utf- -*- # 作业要求: # 打印直辖市,省,市,县,区,街道五级菜单: # 可以一层一层地进入到所有层 # 可以退出到上一层 # 可随时退出程序 mapChina ...

  4. pwnable.kr 之 passcode write up

    先看源码: #include <stdio.h> #include <stdlib.h> void login(){ int passcode1; int passcode2; ...

  5. noi.ac NOIP2018 全国热身赛 第四场 T2 sort

    [题解] 跟51nod 1105差不多. 二分答案求出第L个数和第R个数,check的时候再套一个二分或者用two pointers. 最后枚举ai在b里面二分,找到所有范围内的数,排序后输出. 注意 ...

  6. UVALive - 6275 Joint Venture (二分)

    题意: 给定一个整数w, 然后给定n个数, 问有没有两个数之和恰好为w 分析: 现将n个数数组a[]排序, 然后用两个变量i,j指向开头和末尾, 如果a[i] + a[j] > w, i++, ...

  7. Struts2入门(1)——搭建简单的环境

    步骤: 1.下载Struts2的开发包. 2.创建Web项目. 3.导入需要的jar包到项目里. 4.在web.xml文件里面配置struts2的核心控制器,也就是一个过滤器. 5.编写Action类 ...

  8. int内部方法释义

    python基本数据类型包括:int.str.list.tuple.dict.bool.set(),一切事物都是对象,对象由类创建 1. bit_length:返回数字占用的二进制最小位数 def b ...

  9. URL 路由

    一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则: example.com/class/function/id/ 但是有时候,你可能想 ...

  10. hihoCoder#1105 题外话·堆

    原题地址 有没有更优雅地堆模板啊,总感觉我写的有些啰嗦 代码: #include <iostream> using namespace std; #define MAX_NODE 1000 ...