相关包安装

建议使用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. dfs.datanode.max.transfer.threads

    An HDFS DataNode has an upper bound on the number of files that it will serve at any one time: <p ...

  2. Python爬虫番外篇之Cookie和Session

    关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...

  3. docker - 修改镜像/容器文件的在宿主机上的存储位置(转)

    背景 之前在使用docker的时候,由于启动container的时候用的是默认的mount(路径为 /var/lib/docker),这个目录对应的硬盘空间有限,只有200G左右.现在随着程序运行,有 ...

  4. getcomputedstyle()获取border像素差异问题

    getComputedStyle()方法返回的是一个CSS样式声明对象--CSSStyleDeclaration对象(与style属性的类型相同),包含当前元素所有最终使用的CSS属性值: <! ...

  5. [luogu P3801] 红色的幻想乡 [线段树][树状数组]

    题目背景 蕾米莉亚的红雾异变失败后,很不甘心. 题目描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放. 我们将幻想乡看做是一个n*m的方格地区,一 ...

  6. 支付宝LR集群压测报告

    支付宝压力测试报告 时间:2016-03-23                                             测试人员:XXX 目录 支付宝压力测试报告 1 目录 1 一   ...

  7. 【JAVASCRIPT】React学习-巧用 props 的 children 属性实现内容填充

    背景 平常写组件,经常遇到需要获取内容放入组件内部的情形. 实现方法 我们有两种实现方式 1. 自定义 props render 的时候通过获取 this.props.content 填充到组件内部 ...

  8. [补档][Poi2014]FarmCraft

    [Poi2014]FarmCraft 题目 mhy住在一棵有n个点的树的1号结点上,每个结点上都有一个妹子. mhy从自己家出发,去给每一个妹子都送一台电脑,每个妹子拿到电脑后就会开始安装zhx牌杀毒 ...

  9. No simulation input file assignm…

    QuartusII中仿真时出现No simulation input file assignment specified on simulator page of the settings dialo ...

  10. HTML5基本知识点

    一.什么是HTML HTML是超文本标签语言,即网页的源码.而浏览器就是翻译解释HTML源码的工具. 二.HTML的基本格式 <!DOCTYPE html>: ①文档类型声明:让浏览器按照 ...