相关包安装

建议使用cnpm

npm install --save-dev *****

其中 ***** 部分表示所需要的包模块,如 gulpfile 中的 require('gulp-useref') 需要之前进行包安装如下:

npm install --save-dev gulp-useref

源文件需要的包安装命令如下

 npm install --save-dev gulp gulp-useref gulp-notify gulp-minify-css gulp-concat gulp-css-spriter
npm install --save-dev gulp-clean gulp-cache gulp-imagemin gulp-rename gulp-uglify browser-sync
npm i gulp-htmlmin --save-dev
npm install jshint gulp-jshint --save-dev

源文件结构

下面是 gulpfile 中默认的源文件结构

—— app
—— css // 储存css文件
—— **
—— * .css
—— * .css
—— images // 储存图片
—— * .png
—— * .jpg
—— * .gif
—— script // 储存js文件
—— **
—— * .js
—— * .js
—— sprite // 储存要合成雪碧图的文件
—— * .png
—— * .jpg
—— * .gif
—— **
  —— *.html
—— *.html

命令行命令

gulp clean

清除dist文件夹中的内容

gulp serve

网页热加载

gulp html

更改html中的路径 并 压缩html

需要在html文件里面添加代码形式如下

<!-- build:<type>(alternate search path) <path> <parameters> -->
... HTML Markup, list of script / link tags.
<!-- endbuild --> 如
<!-- build:css css/combined.css -->
<link href="css/one.css" rel="stylesheet">
<link href="css/two.css" rel="stylesheet">
<!-- endbuild -->

gulp CSS

合并CSS文件

雪碧图合并

注意: 不需要的合并的需在css中添加注释如下

@meta {"spritesheet": {"include": false}}

压缩CSS文件

gulp script

合并 js 文件并进行压缩

gulp imgMin

图片压缩

gulp (default)

压缩并合并源文件 并 输出到 dist 文件夹

源码

var gulp = require('gulp'),
useref = require('gulp-useref'), // html 路径替换
notify = require('gulp-notify'), // 提示信息
htmlmin = require('gulp-htmlmin'), // html 压缩
minifyCSS = require('gulp-minify-css'), // css 压缩
concat = require('gulp-concat'), // 文件合并
spriter = require('gulp-css-spriter'), // 雪碧图 clean = require('gulp-clean'), // 清除原有文件
cache = require('gulp-cache'),
imagemin = require('gulp-imagemin'), // 图片压缩
// pngcrush = require('imagemin-pngcrush'),
rename = require('gulp-rename'), // 文件重命名
uglify = require('gulp-uglify'), // js 压缩
jshint = require('gulp-jshint'), // js 检测
browserSync = require('browser-sync'), // 浏览器刷新
reload = browserSync.reload; // html 相关操作
/* 替换路径
*
* 需要在文件里面添加下面的
* <!-- build:<type>(alternate search path) <path> <parameters> -->
* ... HTML Markup, list of script / link tags.
* <!-- endbuild -->
*
* 如
* <!-- build:css css/combined.css -->
* <link href="css/one.css" rel="stylesheet">
* <link href="css/two.css" rel="stylesheet">
* <!-- endbuild -->
*
*/
gulp.task('clean',function(){
return gulp.src('./dist')
.pipe(clean())
.pipe(notify('清除原有文件'))
}) gulp.task('html',function(){
return gulp.src('app/**/*.html')
.pipe (useref())
.pipe(htmlmin({collapseWhitespace: true}))
.pipe(gulp.dest('dist/'))
}); // css 相关操作 /* 合并CSS文件
*
* 雪碧图合并
* 注意: 不需要的合并的需在css中添加注释如下
* @meta {"spritesheet": {"include": false}}
*
* 压缩CSS文件
*
*/
gulp.task('CSS',function(){
return gulp.src('./app/css/**/*.css')
.pipe(concat('main.css'))
.pipe(notify('css 合并完成'))
.pipe(spriter({
// 雪碧图的名称
'spriteSheet' : "./dist/images/sprite_css_img.png",
// 原图文件文件储存位置
// 输出的雪碧图位置
'pathToSpriteSheetFromCSS' : '../images/sprite_css_img.png'
}))
.pipe(notify('spriter 合并完成'))
// 压缩
.pipe(minifyCSS())
// 更改css 并写入
.pipe(gulp.dest('./dist/css'))
.pipe(notify('css 部分完成'))
}); // js 相关操作 gulp.task('script',function(){
return gulp.src('./app/script/**/*.js')
// .pipe(jshint('.jshintrc'))
// .pipe(jshint.reporter('default'))
.pipe(concat('main.js'))
.pipe(gulp.dest('./dist/script'))
.pipe(rename({suffix: '.min'}))
.pipe(uglify())
.pipe(gulp.dest('./dist/script'))
.pipe(notify('js 部分完成'))
}); // 图片品质压缩
gulp.task('imgMin',function(){
return gulp.src('./app/images/**/*')
.pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true })))
.pipe(gulp.dest('./dist/images/'))
.pipe(notify('图片压缩部分完成'))
}) // 网页热加载
gulp.task('serve',function(){
browserSync({
server : {
baseDir : 'app'
}
}); gulp.watch(['**/*.html','css/**/*.css','scripts/**/*.js'],{cwd: 'app'},reload); }); gulp.task('default',['clean'],function(){
gulp.start('html','script','CSS','imgMin');
});

包含常用功能的 gulpfile.js的更多相关文章

  1. 160229-01、web页面常用功能js实现

    web页面常用功能js实现   1.网页未加载时弹出新窗口 <body onunload="window.open('http://www.a68.cn');">< ...

  2. es6常用功能与异步详解(JS高级面试题)

    callback hell方法的使用 可读性不友好 function loadImg(src,callback,fail){ var img = document.createElement('img ...

  3. Google Chrome调试js代码,开发者工具之调试工具常用功能

    参考:Google Chrome调试js代码-http://www.open-open.com/lib/view/open1384785324165.html 重点:左下角一个{}括号图标按钮用于把杂 ...

  4. js实现第一次打开网页弹出指定窗口(常用功能封装很好用)

    js实现第一次打开网页弹出指定窗口(常用功能封装很好用) 一.总结 1.常用功能封装:之前封装的cookie的操作函数非常好用,我自己也可以这么搞 二.js实现第一次打开网页弹出指定窗口 练习1:第一 ...

  5. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  6. WebPack常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  7. JavaScript 常用功能总结

    小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...

  8. 从零开始学习jQuery (十) jQueryUI常用功能实战

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本文是实战篇. 使用jQueryUI完成制作网站 ...

  9. 开源三维地球GIS引擎Cesium常用功能的开发

    Cesium是一个非常优秀的三维地球GIS引擎(开源且免费).能够加载各种符合标准的地图图层,瓦片图.矢量图等都支持.支持3DMax等建模软件生成的obj文件,支持通用的GIS计算:支持DEM高程图. ...

随机推荐

  1. Unity3D 物体移动到指定点

    transform.position=Vector3.MoveTowards(transform.position , Target.position, speed * Time.deltaTime) ...

  2. js实现日期格式化

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-e ...

  3. 多元线性回归模型的特征压缩:岭回归和Lasso回归

    多元线性回归模型中,如果所有特征一起上,容易造成过拟合使测试数据误差方差过大:因此减少不必要的特征,简化模型是减小方差的一个重要步骤.除了直接对特征筛选,来也可以进行特征压缩,减少某些不重要的特征系数 ...

  4. MongoDB入门解析【学习记录】

    刚开始学习mongodb,对笔记做了一个整理.是基于nodejs来学习的. 1.mongodb介绍 mongodb 是C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添 ...

  5. 计算幂 51Nod 1046 A^B Mod C

    给出3个正整数A B C,求A^B Mod C.   例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^ ...

  6. Selenium对浏览器支持的版本

    最新的selenium与几种常用浏览器的版本兼容情况: selenium 3.4.0 : Mozilla GeckoDriver 0.18  --  Firefox 53 - 56 Google Ch ...

  7. 【D3】D3词汇表

    按字母顺序 axis:数轴或坐标轴表示两个维度上数据尺度的直线 bar chart:条形图 (参见Excel)以矩形宽度反映数值大小的图表形式 bar:条形以宽度反映数值大小的矩形(rect) bin ...

  8. 模拟EF CodeFist 实现自己的ORM

    一.什么是ORM 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单来说,ORM 是通过使用描述对象 ...

  9. Java第三次上课课堂试验博文

    1.Java字段初始化的规律: 运行如下所示的代码 package demo; public class InitializeBlockDemo { /** * @param args */ publ ...

  10. 关于Visual Studio调试 无效指针提示

    前几天遇到了这个问题,编译没问题,直接运行没问题 但是一调试,会提示无效指针,(按Ctrl+F5可以运行,但按F5提示无效指针) 只要这样,新建C:\ProgramData\Microsoft Vis ...