gulp的学习

Gulp Tutorial

Gulp: The streaming build system

gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;
她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成;
使用她,不仅可以很愉快的编写代码,而且大大提高我们的工作效率。

项目构建是指项目上线之前对项目源代码进行一系列处理,使其以最佳的形式运行于线上服务器。
常见处理任包括以下几方面:

  1. 模块化开发可以实现功能的复用并解决模块间的依赖关系,但带来好处的同时也使得功能代码的碎片化(若干文件)程度增加。
  2. 使用less、sass等预处理器,可以降低CSS的维护成本,最终需要将这些预处理器编译成css文件;
  3. 对静态资源(css、js、html、images)压缩合并可以提升网页打开速度,提高性能;

以上任务完如果完全靠手动来完成是非常耗时耗力的且容易出错,实际开发通常借助构建工具来实现。
所谓构建工具是指通过一系简单配置就可以帮我们实现合并、压缩、校验、预处理等一系列任务的软件工具。
常见的构建工具包括:Grunt、Gulp、F.I.S(百度出品)、webpack等。

Gulp是基于Nodejs开发的一个构建工具,借助gulp插件可以实现不同的构建任务,
其以简洁的配置和卓越的性能成为目前主流的构建工具。

Introduction


Getting Started

官方文档:https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md

一:Install the gulp command

在项目中使用 gulp 首先需要确保全局有 gulp-cli 环境,如果有就不需要执行下面的命令了。

# npm install --global gulp-cli
yarn global add gulp-cli

二:Install gulp in your devDependencies

# npm install --save-dev gulp
yarn add -D gulp

三:Create a file called gulpfile.js in your project root with these contents:

var gulp = require('gulp');

gulp.task('default', function() {
  console.log('hello gulp')
})

四:Test it out: Run the gulp command in your project directory:

gulp

API Documentation

官方文档:https://github.com/gulpjs/gulp/blob/master/docs/API.md

  • gulp.task
  • gulp.src
  • gulp.dest
  • gulp.watch

gulp.task(name [, deps] [, fn])

作用:定义各种不同的任务

  • gulp.task(name, fn)
  • gulp.task(name, deps, fn)
  • gulp.task(name, fn(cb))
  • gulp.task(name, deps, fn(cb))

一:普通任务

gulp.task('a', function () {
  console.log('1 aaa')
})

gulp.task('b', function () {
  console.log('2 bbb')
})

二:任务之间的依赖

gulp.task('a', function (cb) {
  setTimeout(function () {
    console.log('1 aaa')
    cb()
  }, 1000)
})

// b 任务依赖的 a 任务中的回调函数如果不调用,b 任务是不会执行的
gulp.task('b', ['a'], function () {
  console.log('2 bbb')
})

三:gulp 流控制

gulp.task('a', function () {
  // 当任务中是一个 gulp 流的时候则需要通过 return 来保证依赖中的执行顺序
  return gulp.src()
    .pipe()
    // ...
})

gulp.task('b', ['a'], function () {
  // doSomething
})

gulp.src(globs[, options])

gulp教程之gulp中文API:http://www.ydcss.com/archives/424

作用:根据路径(字符串或数组)读取需要构建的资源

globs

需要处理的源文件匹配符路径。

类型(必填):String or StringArray,通配符路径匹配示例:

  • src/a.js 指定具体文件;
  • * 匹配所有文件 例:src/*.js (包含src下的所有js文件);
  • ** 匹配0个或多个子文件夹 例:src/**/*.js (包含src的0个或多个子文件夹下的js文件);
  • {} 匹配多个属性 例:src/{a,b}.js (包含a.js和b.js文件) src/*.{jpg,png,gif}(src下的所有jpg/png/gif文件);
  • ! 排除文件 例:!src/a.js (不包含src下的a.js文件);

options.base

options.base:类型:String 设置输出路径以某个路径的某个组成部分为基础向后拼接,具体看下面示例:

gulp.src('client/js/*/.js')
  .pipe(minify())
  .pipe(gulp.dest('build'))  // Writes 'build/somedir/somefile.js'

gulp.src('client/js/*/.js', { base: 'client' })
  .pipe(minify())
  .pipe(gulp.dest('build'))  // Writes 'build/js/somedir/somefile.js'

gulp.dest(path[, options])

作用:构建任务完成后资源存放的路径

gulp.watch(glob[, opts], tasks)

监视指定资源的改动,然后可以调用响应的任务处理

gulp.watch(glob [, opts, cb])


常用插件

插件名称 作用
del 删除文件或文件夹
gulp-less 编译LESS文件
gulp-rname 重命名文件
gulp-imagemin 图片压缩
gulp-uglify 压缩Javascript
gulp-concat 合并 js 文件
gulp-concat-css 合并 css 文件
gulp-cssnano 压缩 css
gulp-htmlmin 压缩HTML
gulp-nunjucks 模板引擎
gulp-rev 添加版本号
gulp-rev-collector 内容替换
gulp-useref gulp-if
gulp-load-plugins 依赖自动加载
gulp-useref 自动合并打包处理
gulp-wrap 包装内容
gulp-angular-templatecache AngularJS 模板缓存
browser-sync 和 gulp 配合使用实现文件改变执行某个任务后自动刷新
yargs 获取命令行参数
gulp-if 根据判断条件执行某个插件
http-proxy-middleware http 代理插件

gulp 实战之:高级写页面

实现 HTML 模板功能,例如公共 HTML 头部和底部,提供可维护性,
以及实现 HTML 自动压缩,css 压缩,js 压缩,或者合并。

时间: 2024-08-22 15:07:20

gulp的学习的相关文章

是什么时候开始学习gulp了

转自:http://www.ydcss.com/archives/18 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率. gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏览

零基础如何系统地学习前端开发?

  网站开发开发大致分为前端和后端,前端主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑.其核心价值在于对用户体验的追求.可以按如下思路学习系统学习: 基础知识: 1.HTML + CSS 这部分建议在 W3school 在线教程 上学习,边学边练,每章后还有小测试. 之后可以模仿一些网站做些页面.在实践中积累了一些经验后,可以系统的读一两本书,推荐<Head First HTML 与 CSS 中文版>,这本书讲的太细了,我没能拿出耐心细读.你可以根据情况斟酌. 2.Javascri

通过bootstrap全面学习less_javascript技巧

        很早之前就听说过less了,但是一直拖着没去学习.最近抽空看了less,其实语法很简单,看一遍基本就知道怎么用了.但是问题又来了,那我在什么时候用less呢.平时自己写页面用less的话,感觉是方便了些,但是难道好处就只是这样? 刚好最近也在学习bootstrap,发现其源文件就是用less写的,看了之后,我才深深体会的less的强大,对less也有了更深一层的理解. 1.Less是什么? LESS CSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为

设计师该如何学习前端?

笔者的经历在知乎就可以看到,大学专业是数字媒体艺术,大一实习过动效设计师,大二拿到了人生第一个大公司的 offer 是交互设计师,后来转岗到淘宝旅行的前端团队,现在在微信电影票做前端研发.也是走过了不少野路子,不过还好有小右哥 @尤雨溪 这样艺术/设计转前端的大神在前面做典范,也证明这条路是玩的通的 接下来就说说自己的学习建议吧,一个小教程,也是自己走过的流程,仅供参考哈 ---- 背景篇 在这个时代学习新东西,一定要善于使用 Bing/Google 等搜索引擎-网络上的资源非常丰富,自学能力也

前端构建工具gulp使用

前端自动化流程工具,用来合并文件,压缩等. Gulp官网 http://gulpjs.com/ Gulp中文网 http://www.gulpjs.com.cn/ Gulp中文文档 https://github.com/lisposter/gulp-docs-zh-cn Gulp插件网 http://gulpjs.com/plugins/ Awesome Gulp https://github.com/alferov/awesome-gulp StuQ-Gulp实战和原理解析 http://i5

现代Web开发需要学习的15大技术

将近4年前,我写了一篇名为<Future of Web and Mobile: HTML5, CSS3 and Javascript>的博客文章,其中我提到了Javascript的出现,以及JavaScript框架,例如jQuery.Knockout等的爆 发. 快进到现在,我发现现代web开发再一次将发生压倒性的改变.信息资讯的铺天盖地令人迷惑,尤其对于初学者而言.首要原因是新的框架,例如 Angular 2和ReactJs出现了,使用了尚未完全定型的ECMAScript 6特性.并且有更多

Gulp:新一代前端构建利器

1.什么是Gulp gulp.js 是一种基于流的,代码优于配置的新一代构建工具. Gulp 和 Grunt 类似.但相比于 Grunt 的频繁的 IO 操作,Gulp 的流操作,能更快地完成构建. 2.Gulp特性 使用方便 通过代码优于配置的策略,Gulp可以让简单的任务简单,复杂的任务更可管理. 构建快速 通过流式操作,减少频繁的 IO 操作,更快地构建项目. 插件高质 Gulp 有严格的插件指导策略,确保插件能简单高质的工作. 易于学习 少量的API,掌握Gulp可以毫不费力.构建就像流

详解前端自动化工具gulp自动添加版本号_javascript技巧

之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时在更新css或js时老是在客户端存在缓存导致更新后的效果无法实时展现的苦恼.所以就赶紧去试了一下,果真可以,很高兴啊,真是为项目开发,为效果的快速展现提供了很多的便利. 实现原理: 1.修改js和css文件: 2.通过对js,css文件内容进行hash运算,生成一个文件的唯一hash字符串(如果文件

gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)_javascript技巧

gulp简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率. gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏览器自动刷新.部署文件生成,并监听文件在改动后重复指定的这些步骤.