把之前用到的gulp总结整理下,有时候说不出来的,就写出来吧,做个笔记,以后也可以慢慢补充

  cnpm i --save-dev gulp 把nodejs模块写到package.json配置文件中,当保存到git仓库时,只需保存package.json即可
 
  用到的gulp模块有:gulp-clean/gulp-concat/gulp-connect/gulp-cssmin/gulp-less/gulp-load-plugins/gulp-uglify/open
    注:安装node模块是可批量安装的  cnpm i --save-dev gulp-clean gulp-concat....
 
  gulp-plumber:当编译css or js时发生错误,它不会立即中断线程,而只是抛出错误

  gulp有两个优点:

    1、基于流,效率非常高  简言之,把产生的中间文件放在内存中进行处理,直到最后一步才生成文件,操作文件

    2、任务化,编写成一个个小任务 然后合并执行任务 逻辑清晰 可读性好

  gulp有两个功能很重要——压缩、合并,合并之后减少Http请求,压缩后减少带宽

  常用的api(函数):src、dest、watch、task、pipe  

    src:     读取文件、文件夹
    dest:     生成文件、写文件
    watch:监控文件
    task:定制任务
    pipe:用流的方式处理文件
 
  贴出gulpfile.js的文件编写:
  

//引入模块
var gulp = require('gulp');
var $ = require('gulp-load-plugins')(); //其他的gulp模块就可以直接通过$来引用,而不需再声明变量
var open = require('open'); //全部变量来定义目录路径
var app = {
srcPath:'src/', //源代码放置的位置
devPath:'build/', //整合之后的文件,开发目录
prdPath:'dist/' //用于生产、部署
}; //把bower下载的第三方创建拷贝到生产环境目录
gulp.task('lib',function(){
gulp.src('bower_components/**/*.js') //对bower_..下面的子文件进行深度遍历,读取文件
.pipe(gulp.dest(app.devPath+'vendor')) //操作:写文件
.pipe(gulp.dest(app.prdPath+'vendor'))
.pipe($.connect.reload())//构建完,刷新浏览器进行实时预览 }); gulp.task('html',function(){
gulp.src(app.srcPath+'**/*.html')
.pipe(gulp.dest(app.devPath))
.pipe(gulp.dest(app.prdPath))
.pipe($.connect.reload()) }); gulp.task('json',function(){
gulp.src(app.srcPath+'data/**/*.json')
.pipe(gulp.dest(app.devPath+'data'))
.pipe(gulp.dest(app.prdPath+'data'))
.pipe($.connect.reload()) }); gulp.task('less',function(){
gulp.src(app.srcPath+'style/index.less')
.pipe($.plumber()) //修复了pipe处理异常的bug,让任务执行更平滑
.pipe($.less())
.pipe(gulp.dest(app.devPath+'css'))
.pipe($.cssmin())
.pipe(gulp.dest(app.prdPath+'css'))
.pipe($.connect.reload()) }); gulp.task('js',function(){
gulp.src(app.srcPath+'script/**/*.js')
.pipe($.plumber())
.pipe($.concat('index.js'))
.pipe(gulp.dest(app.devPath+'js'))
.pipe($.uglify())
.pipe(gulp.dest(app.prdPath+'js'))
.pipe($.connect.reload()) }); gulp.task('image',function(){
gulp.src(app.srcPath+'image/**/*')
.pipe($.plumber())
.pipe(gulp.dest(app.devPath+'image'))
.pipe($.imagemin())
.pipe(gulp.dest(app.prdPath+'image'))
.pipe($.connect.reload()); }); gulp.task('build',['image','js','less','json','html','lib']); //每次发布的时候,把之前的目录清除,避免旧的文件对当前项目造成影响
gulp.task('clean',function(){ //构架任务
gulp.src([app.devPath, app.prdPath])
.pipe($.clean()); }); //编写个服务器
gulp.task('serve',['build'],function(){
$.connect.server({
root:[app.devPath],
livereload:true, //适用于高级浏览器,自动刷新浏览器,ie就不支持
port:1234 });
open('http://localhost:1234'); //自动构建
gulp.watch('bower_components/**/*',['lib']);
gulp.watch(app.srcPath+'**/*',['html']);
gulp.watch(app.srcPath+'data/**/*',['json']);
gulp.watch(app.srcPath+'style/**/*',['less']);
gulp.watch(app.srcPath+'script/**/*',['js']);
}); gulp.task('default',['serve'])

自动化构建工具—gulp的简单配置的更多相关文章

  1. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  2. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  3. 前端自动化构建工具——gulp

    gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...

  4. 前端自动化构建工具 Gulp 使用

    一个月没写博客了,今天有时间,就写个gulp的入门使用吧.. 简介:gulp是一个前端自动化构建工具,可以实现代码的检查.压缩.合并……等等,gulp是基于Node.js的自动任务运行器 一.安装No ...

  5. 前端自动化构建工具 gulp 学习笔记 一、

    一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ...

  6. 基于流的自动化构建工具------gulp (简单配置)

    项目上线也有一阵子,回头过来看了看从最初的项目配置到开发的过程,总有些感慨,疲软期,正好花点时间,看看最初的配置情况 随着前端的发展,前端工程化慢慢成为业内的主流方式,项目开发的各种构建工具,也出现了 ...

  7. 前端自动化构建工具-gulp

    gulp 和grunt这两个是我知道的自动构建工具,但是说实话都没在项目中用过,不太清楚自动化构建是什么意思, 1.grunt和gulp有什么相同点和不同点? (1).易于使用:采用代码优于配置策略, ...

  8. 前端自动化构建工具——gulp环境搭建教程

    gulp是前端工程化的工具,它可以对html,css,js等代码和图片进行压缩,也可以对sass和less等预处理语言进行编译,代码部署.gulp学起来简单,用起来方便,大大提高我们工作效率. 这里可 ...

  9. 自动化构建工具gulp

    1.优点 1.1 易于使用 通过代码优于配置的策略,gulp让简单的任务简单,复杂的任务可管理 1.2 构建快速 利用node.js流的威力,你可以快速构建项目并减少频繁的IO操作 1.3 插件高质 ...

随机推荐

  1. 变量值a交换b,b交换a....

    package day01; public class Test1 { public static void main(String[] args) { //不利用其它变量时期A和B的值交换 Inte ...

  2. [Bayes] Variational Inference for Bayesian GMMs

    为了世界和平,为了心知肚明,决定手算一次 Variational Inference for Bayesian GMMs 目的就是达到如下的智能效果,扔进去六个高斯,最后拟合结果成了两个高斯,当然,其 ...

  3. 网络基础一 交换机 路由器 OSI7层模型

    第1章 网络基础 1.1 网络的出现 解决计算机通讯的需求 实现计算机信息可以传递 1.2 主机之间实现通讯基本要求(三要素) ①. 需要在两台主机之间建立物理连接,物理连接的方式有网线 光纤线 wi ...

  4. web前端优化--DOM性能优化

    1.DOM访问与修改的优化: DOM访问是有代价的,修改DOM则会引起DOM的重绘与重排,而这两种操作会消耗性能. (1)缓存DOM:将频繁访问的对象或属性使用变量缓存起来,每次访问的时候,直接使用变 ...

  5. 针对数据量较大的表,需要进行跨库复制,采用navcat 实现sqlite数据库跨数据库的数据表迁移 [转载]

    2014年12月13日 14:36 新浪博客 (转自http://www.cnblogs.com/nmj1986/archive/2012/09/17/2688827.html) 需求: 有两个不同的 ...

  6. Oracle - java创建Oracle 的触发器

    Oracle - java创建Oracle 的触发器 今天碰到这个问题,遇到点问题,到这来 总结一下解决的办法, 需求,为一个用户当中的表增加一个自动增长列,我还没有学Oracle 的这部分,只是简单 ...

  7. C# 取Visio模型信息的简易方法

    最近的一个项目,要求导出Visio图纸,因为是建筑类的,所以,需要设置墙壁,门,房间等信息的参数. 拿墙壁为例,选中墙壁模型,右键属性,会弹出以下对话框. 需要设置墙长.墙壁厚度等一些列信息. 现在C ...

  8. 淘宝轮播JS

    taobao首页轮播原生js面对对象封装版 Author:wyf 2012/2/25

  9. Hiberante知识点梳理

    Hibernate简介 Hibernat是一个ORM(关系映射)框架,对JDBC访问数据库的操作进行了简化,并且将数据库表中的字段和关系映射为对象,简化了对数据库的操作. 使用方法 读取并解析配置文件 ...

  10. Anaconda快捷搭建Python2和Python3环境

    我们在使用Pycharm编辑Python程序经常会因为不熟悉Python2和Python3的一些代码区别而导致错误,我们知道他们之间很多代码是必须运行在对应版本中的,否则是会报错的.因此,本文介绍一个 ...