Gulp 一个自动化构建工具-介绍-安装-使用

1. Gulp的介绍

参考网址:http://www.gulpjs.com.cn/ gulp 中文网
用自动化构建工具增强你的工作流程!
它是一个流式的构建系统(工具)
现在在前端开发这一块底层框架构建这里有很多很多的这种底层构建工具,像国内的有百度出的 FIX ,用腾讯之前出的 NodeJS ,像国外是 Gulp 等其他的,这些构建工具都是可以更好的帮助我们构建底层的工作流程的,工作流程就是一些必须要走的流程,这些流程一直都是必须的,所以我们就应该有一套可以帮助我们构建底层工作流程的工具来实现我们更多自动化的东西,Gulp 就是这样的一种工具
它是一个流式的构建工具,如果是你需要拿到一个文件将它修改之后再编译然后再把它放回去,就这样它会基于文件夹的这种 I/O(输入/输出),如果项目工作量特别大的话那整个一个开发量、整个一个运行编译的时间会特别长,但是 Gulp 它是有一个类似于 Linux 系统的管道的概念,是整个一个流式下来,既出又进 进来 出 作为下一个的进,I/O 又 I,它没有那种再去写的形式,只要各种像 jquery 那样 . . . 就可以把任务从一开始一直输送到最后,而且对于 Gulp 来说,它现在整个开源的圈子给它贡献的插件也非常的多,它的配置也是较为简单的,看下官网的示例,再进行调试,基本就可以跑通了,
但是 Gulp 也有自己的缺点: 在官网上有些插件是跟不上的,但是我们常用的它基本上都有了;还有就是它是基于流的,如果说网上的这些插件不符合 Team 的要求,这个时候就需要你自己去开发一些 基于流式的编译工具以及一些插件,如果你对 NodeJS 的流不是非常熟悉那么开发起来会很困难
还有一个底层的构建工具 npm ,它就像一个原始的构建工具一样,它也可以进行一些构建
我们把这些构建大致可以分为两方面:一种是前端构建,一种是可以集成到 php 也好、NodeJS 也好,像国内的 FIX 它能集成 php 它能集成 Node ,会生成一些 map 文件,然后不用在前端在 require 的时候分析依赖,它会自动分析好这些依赖跟后端进行相关的配合

2. Gulp的安装

参考连接:http://www.gulpjs.com.cn/ Gulp 中文网
点击上述网址中的 【开始使用】按钮,跳转至下面的网址中
http://www.gulpjs.com.cn/docs/getting-started/ 入门指南 - gulp.js 中文文档 | gulp.js 中文网

  1. 全局安装 gulp,并查看是否安装成功
$ npm install --global gulp
$ gulp -v
  1. 在桌面新建一个 gulptest 项目文件夹,并在命令行中进入该文件夹目录下
$ cd Desktop
$ cd gulptest
  1. 项目初始化
$ npm init
  1. 作为项目的开发依赖(devDependencies)安装:
$ npm install --save-dev gulp
  1. 此时运行 gulp
$ gulp

会报如下图所示的错误

image.png

是因为没有创建与工具匹配的 gulpfile 文件

  1. 在项目根目录下创建一个名为 gulpfile.js 的文件:
  2. 此时运行 gulp
$ gulp

会报如下图所示的错误

image.png

是因为这个模块需要自己手动引入的

  1. 编辑 gulpfile.js 文件
var gulp = require('gulp');
gulp.task('default', function() {
    console.log('ok');
});
  1. 运行 gulp
$ gulp

命令行中显示如下

image.png

成功输出了 ok ,证明已经安装好了

3. Gulp 的使用

参考链接:https://gulpjs.com/plugins/ Gulp 插件官网

  1. 在项目中新建如下结构的文件夹

js -> index.js
js -> main.js
build -> all.min.js(这个 .js 文件内容是 index 和 main 两个 js 文件压缩合并后的)
index.html

  1. 编辑文件
    index.html
<script type="text/javascript" src="./build/all.min.js"></script>

index.js

var index = {};
index = {
    test:function(argument) {
        console.log('test');
    }
}
index.test();

main.js

var main = main || {};
main.test = function(argument) {
    console.log('main test');
}
main.test();

gulpfile.js

var gulp = require('gulp');
//引入压缩插件
var uglify = require('gulp-uglify');
//引入合并插件
var concat = require('gulp-concat');
//这个变量可以作为下面的 gulp.src() 的参数
// var paths = {
//     scripts: ['js/index.js', 'js/main.js']
// }
gulp.task('default', function() {
    //这里是找到了 js 目录下的所有的 js 文件
    //这里的参数也可以写成上面定义的 paths 对象
    gulp.src('js/*.js')
    //将上面找到的两个 js 文件作为 输入 进行压缩,压缩完之后直接将这个东西 输出 作为下一步的 输入 
    // I/O/I
        .pipe(uglify())
        //将上一步压缩好的文件 合并至 all.min.js 文件中 输出  作为下一步的 输入
        .pipe(concat('all.min.js'))
        //将上一步 合并好的文件放到 build 文件夹中
        //这个就是基于流式的方式
        .pipe(gulp.dest('build'));
});
  1. 需要在命令行中装 gulpfile.js 中两个引入的包
$ cnpm install gulp-uglify --save-dev
$ cnpm install gulp-concat--save-dev
  1. 运行 gulp
gulp

命令行中显示如下,表示执行成功了

image.png
  1. 此时查看 all.min.js 文件,已经成功压缩并合并了
    all.min.js
var index={};(index={test:function(t){console.log("test")}}).test();
var main=main||{};main.test=function(n){console.log("main test")},main.test();
  1. 使用 gulp 这个工具时,要考虑你的团队是否是趋于 流式 的工作模式,如果不是的话采用这个工具就会需要自己去写一些基于流式的插件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容

  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    依依玖玥阅读 3,156评论 7 55
  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,445评论 1 32
  • 前言 本文默认你已经安装好node环境,并且熟悉node命令,和window cd命令。 gulp简介 基于nod...
    9I阅读 1,985评论 4 50
  • 对网站资源进行优化,并使用不同浏览器测试并不是网站设计过程中最有意思的部分,但是这个过程中的很多重复的任务能够使用...
    懵逼js阅读 1,071评论 0 8
  • 编辑于2015年 转载自某作者的译文 作者要是看到请联系我注明出处 对网站资源进行优化,并使用不同浏览器测试并不是...
    krock01阅读 449评论 0 2