昨天花了一天的时间,学习了一下gulp,今天整理一下,也分享给朋友们。

  首先当然是去gulp的官网逛一圈了:

  http://gulpjs.com/

  中文站地址:

  http://www.gulpjs.com.cn/

  里边有入门指南,如下:

  

  1. 全局安装 gulp:

$npm install --global gulp

  

  2. 在项目根目录创建package.json文件,可以手动创建,也可以用这行命令自动化完成:

  

$ cd <yourworkspacePath>
$ npm init

  3. 作为项目的开发依赖(devDependencies)安装

$ npm install --save-dev gulp

  4. 在项目根目录下创建一个名为 gulpfile.js 的文件:

var gulp = require('gulp');
gulp.task('default', function() {
  // 将你的默认的任务代码放在这
  console.log("hello gulp!");
});

  5. 运行 gulp

$ gulp

  不过还是要有一些细节需要注意

  1.在windows环境下命令当然就不要加那个$符号了。

  

  2.网上还有一种npm install –global gulp-cli这种全局安装的方法,那么gulp和gulp-cli有什么不同呢?答案在这里:

  http://stackoverflow.com/questions/35571679/what-does-gulp-cli-stands-for

  3.为什么要在全局装一个gulp又要在本地项目装一个gulp呢?

  因为方便版本控制。不同的项目可以使用不同版本的gulp而不互相影响,就是这样喽。

  

  等等,等等,很容易走到这里的我,还是没搞懂一件事,我们为什么要用gulp。为什么不是grunt而是gulp。还有一些相似的功能的webpack,为什么是gulp!于是,我查到了这些:

  为什么是gulp不是grunt

  http://slides.com/contra/gulp#/

  gulp跟webpack又是啥关系:

  https://www.zhihu.com/question/37020798(感谢知乎)

  如果这些都不是你关心的问题,你可能是想问:为啥要用gulp或者grunt

  借用grunt中文网的一句话:自动化。对于需要反复重复的任务,例如压缩(minification)、编译、单元测试、linting等,自动化工具可以减轻你的劳动,简化你的工作。

  

  好了,解决了这么多个为什么以后,我们继续gulp的学习之旅。就在刚刚,我们已经装好了gulp,那么我们下面就开始我们的工作吧。

  假如说,我们需要给js文件进行压缩这样一件事,那么我们最原始的方式,可以把代码拷贝到压缩工具里,然后让工具压缩了,我们再拷出来放到我们的工程里。如果用gulp的话呢,我们就可以不用这么麻烦了,我们只需要做这几件事:

  

  1.安装gulp的js压缩插件

  npm install –save-dev gulp uglify

  (大家应该注意到了吧,–save-dev的意思就是把这个插件的安装信息写入到我们的package.json文件里的意思)

  

  2.在gulpfile.js里配置任务

var gulp = require('gulp'),
uglify = require('gulp-uglify');
gulp.task('compile-js',function(){
return gulp.src(<你要压缩的js文件路径>)
.pipe(uglify())
.pipe(gulp.dest(<你要输出的文件路径>));
});

  写好以后,运行 gulp compile-js

  这样看是不是很简单,哈哈。你可能觉得,这没那么简单啊,还要写代码,好麻烦。那是因为你只压缩了一个文件啊,如果让你压缩十个以上的文件,在压缩工具里拷贝来拷贝去都会弄错吧,但是如果用gulp,工作量一点都没有增加,还是这一小段代码就搞定。同样的,css,html的压缩,sass的解译都可以在这里完成,相比以前用多个工具软件切来切去方便的就不是一点半点了。

  

  当然啦,这里边还是有一些小坑的哦。首先是gulp的api你需要学习,要不然你怎么知道怎么建任务,怎么制定源文件和目标文件呢。

  http://www.gulpjs.com.cn/docs/api/

  这个小栗子就完了,不过呢,还有一些常用的功能,对应一些常用的插件,来做介绍:

  http://www.cnblogs.com/2050/p/4198792.html

  上边这篇文章的第四部分,插件部分讲的很好哦。

  然后就是一些小技巧,比如说watch和changed的事:

  http://www.tuicool.com/articles/2miAvyu

  上边这篇文章是一篇踩坑文,感谢朋友们的分享。

  

  还有一个小技巧,那就是如何删掉某一个插件,就比如你某个插件装坏了,或者你不需要了,你就这样:

  npm uninstall –save <插件全名>

  比如我们刚才的gulp-uglify

  npm uninstall –save gulp-uglify

  感谢网友们的无私分享!

hello gulp,使用gulp的第一天。的更多相关文章

  1. 【gulp】Gulp的安装和配置 及 系列插件

    注意:要安装俩次gulp(全局和本地):全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能. 之前由大牛帮忙配置的gulp来用.今天时间充裕,就和小伙伴一起动手配置 ...

  2. [如何在mac下使用gulp] 2. gulp模块的常用方法

    常用的gulp模块方法有: gulp.src() gulp.src('client/one.js'); //指定明确的要处理文件 gulp.src('client/*.js'); //处理client ...

  3. 玩转gulp之gulp编译less

    用好gulp grunt webpack让前端编程走向自动化,是作为一个前端开发必须学会的技能,不然逼格怎么提升的上去呢... 然后教大家如何用gulp装逼.一点点的学,都是相通的嘛 1. 安装nod ...

  4. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  5. 【gulp】gulp + browsersync 构建前端项目自动化工作流

    什么是 gulp? gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.gulp.js 是基于 node.js 构建的,利用 node.js 流的威力,你可以快速构 ...

  6. 利用gulp 插件gulp.spritesmith 完成小图合成精灵图,并自动输出样式文件

    安装依赖 yarn add gulp yarn add gulp.spritesmith 本次依赖的版本是: "gulp": "^3.9.1" "gu ...

  7. Gulp思维——Gulp高级技巧

    本文翻译自Getting gulpy -- Advanced tips for using gulp.js 感受过gulp.js带来的兴奋过后,你需要的不仅仅是它的光鲜,而是切切实实的实例.这篇文章讨 ...

  8. [转]Gulp思维 —— Gulp高级技巧

    感受过gulp.js带来的兴奋过后,你需要的不仅仅是它的光鲜,而是切切实实的实例.这篇文章讨论了一些使用gulp.js时常踩的坑,以及一些更加高级和定制化的插件和流的使用技巧. 基本任务 gulp的基 ...

  9. 我的gulp第一个程序

    以前都是单枪匹马的干,从没用过模块化的打包工具,加入新的团队后,模块化开发学到不少,尤其是工具的使用.团队目前较多的使用gulp,也是最流行的一款前端打包工具.最近Team开始尝试用gulp,我也只是 ...

  10. gulp+webpack+angular1的一点小经验(第一部分gulp与webpack的整合)

    时间匆匆如流水继上周熟悉了gulp的初步安装与环境配置以后,我的项目又进入了新的阶段! 这篇文章将把我这一周遇到的一些问题,以及解决的方式做一个小小的总结,不一定记的完整,但都是个人的一点经验,分享给 ...

随机推荐

  1. MinIO 搭建

    MinIO 搭建 MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务.它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文 ...

  2. permu 莫队 总结

    由于每次询问静态区间里完整值域段的最大大小 貌似很好用莫队转移,所以考虑怎么转移 当给它扩展一个数时,就是给值域添加了一个值 这个值可能已经存在,也可能是新的 有的神仙做法是维护了一个并查集,然而我这 ...

  3. 使用Typescript重构axios(十三)——让响应数据支持泛型

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  4. 爬虫学习--Requests库详解 Day2

    什么是Requests Requests是用python语言编写,基于urllib,采用Apache2 licensed开源协议的HTTP库,它比urllib更加方便,可以节约我们大量的工作,完全满足 ...

  5. Ios第三方FMDB使用说明

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dyli ...

  6. springboot配置springMVC

    /** * @ClassName MvcConfigure * @Description SpringMVC配置 * @Author JAGNG * @Date 2019/10/28 10:23 ** ...

  7. MySQL数据库之MyISAM与InnoDB的区别

    MySQL数据库之MyISAM与InnoDB的区别 从以下几个方面: 1.存储结构 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义 ...

  8. [quartusⅡ] 使用quartusⅡ的过程中,遇到过的一些“软件上的问题”

    1.USB blaster的驱动在设备管理器上点“更新驱动软件”,更新不了,说什么哈希值不在指定目录下,如下图, 解决方法是,https://blog.csdn.net/rdgfdd/article/ ...

  9. PowerMock学习(三)之Mock局部变量

    编写powermock用例步骤: 类上面先写这两个注解@RunWith(PowerMockRunner.class).@PrepareForTest(StudentService.class) 先模拟 ...

  10. pat 1027 Colors in Mars(20 分)

    1027 Colors in Mars(20 分) People in Mars represent the colors in their computers in a similar way as ...