zoukankan      html  css  js  c++  java
  • 使用gulp构建nodejs,你只需要记住5个函数

    gulp

    gulp是一个nodejs的streaming构建工具,所谓的streaming大致意思就是把构建流程想成一个个链接的管道(pipe)。

    为什么要这样做呢?

    要解释原因,就不得不提到unix。unix本身只提供了数量相对较少的命令,但是你可以命令的组合完成很强大的功能。命令和命令之间的衔接通常就用的是pipe。

    类似,使用gulp,你仅仅只需要记住5个命令。这5个命令就是gulp提供给我们的一套streaming构建的架子,也就相当于提供了unix中的pipe功能。至于说pipe中每个命令的功能,则可以使用现有的plugin或者自定义完成。

    安装gulp

    如果npm版本比较老,可能会遇到安装gulp失败的情况

    更新/安装npm:

    curl https://www.npmjs.org/install.sh | sudo sh

    安装npm:

    npm install -g gulp

    npm install--save-dev gulp

    安装完成以后,可以用gulp -v试一试是否正确

    [20:29:16] CLI version 3.8.5
    [20:29:16] Local version 3.8.5

    一个最简单的gulp脚本

    gulpfile.js

    ---

    var gulp = require('gulp')

    gulp.task('default', function() {
       console.log('this is the default task')
    })

    运行:gulp

    [20:29:02] Starting 'default'...
    this is the default task
    [20:29:02] Finished 'default' after 74 μs

    gulp和大多数的构建工具类似,都是由task组成的,上面的例子中,default是task名字,也表示是默认的task。也可以用gulp default运行,执行的是同一task。

    一个第二简单的gulp脚本(src, pipe)

    安装jasmine插件

    npm install --save-dev gulp-jasmine

    gulpfile.js

    ---

    var gulp = require('gulp');
    var jasmine = require('gulp-jasmine');

    gulp.task('default', function () {
        return gulp.src('spec/google.spec.js')
            .pipe(jasmine());
    });

    安装superagent方便测试

    spec/google.spec.js

    ---

    var superagent = require('superagent')

    describe ('google', function() {
       it("should return the google homepage", function(done) {
          superagent.get('http://www.google.com/')
             .end(function(e, res) {
                expect(e).toBe(null)
                expect(res.status).toBe(200)
                done();
             })
       })
    })

    运行测试

    [21:01:07] Starting 'default'...
    [21:01:07] Finished 'default' after 79 ms
    .
    Finished in 0.41 seconds
    1 test, 2 assertions, 0 failures

    gulp有比较多的插件,比如上面用到的gulp-jasmine就是其中的一个。

     gulp.src('spec/google.spec.js')
            .pipe(jasmine());

    有意思的东西来了,什么是src和pipe?

    我们先看一个unix命令:

     cat gulpfile.js | wc -l

    这是两个独立的命令,cat gulpfile.js用来获取gulpfile.js的文件内容,wc -l用来统计文件中的行数,他们中间用“|”相连。把cat gulpfile.js的输出作为wc -l的输入。这是再常见不过的unix命令

    gulp中吸取了这样的想法,上面gulp命令可以想作:

     'spec/google.spec.js' | jasmine()

    这样应该就非常好理解了吧。

    你仅仅需要知道的5个gulp命令

    gulp.task(name, fn)这个你应经见过了

    gulp.run(tasks...)尽可能多的并行运行多个task

    gulp.watch(glob, fn)当glob内容发生改变时,执行fn

    gulp.src(glob)返回一个可读的stream

    gulp.dest(glob)返回一个可写的stream

    知道这些以后,你再看https://github.com/gulpjs/gulp中的例子,就显得容易了很多

  • 相关阅读:
    转载:Package by feature, not layer
    [翻译][架构设计]The Clean Architecture
    消息处理管道
    Pool:小对象缓存or复用
    View事件分发
    动静分离-前后端分离部署
    MySQL 执行计划中Extra的浅薄理解
    探索java世界中的日志奥秘
    记一次转不过弯的递归
    Spring MVC
  • 原文地址:https://www.cnblogs.com/iqian/p/5488612.html
Copyright © 2011-2022 走看看