gulp 学习笔记


gulp.src(globs[,options])

globs   类型:String或Array

options   类型:Object

options.buffer  类型:Boolean,默认值:true

options.read   类型:Boolean,默认值:true

options.base  类型:String, 默认值:true    

// 匹配'src/js/files/file.js' 并且将‘base’解析为‘src/js’
gulp.src('src/js/*.js')
  .pipe(minify())
  .pipe(gulp.dest('build')); // 写入 ‘build/files/file.js’复制代码

// 匹配除了build,images,node_modules目录,根目录下所有的html与php文件
gulp.src(['./**/*.{html, php}', '!{build, images, node_modules}/**'])
  .pipe(minify())
  .pipe(gulp.dest('build'))复制代码

// 匹配'src/js/files/file.js' 并且将‘base’解析为‘src’
gulp.src('src/js/**/*.js', { base: 'src' })
  .pipe(minify())
  .pipe(gulp.dest('build')) // 写入 ‘/js/build/files/file.js’复制代码


gulp.dest(globs[,options])

    可以通过pipe输入到当前目录,也可以通过pipe输出到目标文件。如果该文件夹不存在,将会自动创建它。

path  类型:String or Funcition     

options  类型:Object

options.cwd  类型:String   默认值:process.cwd()

options.mode  类型:String   默认值:0777

gulp.src('./src/js/*.jade')
  .pipe(jade())
  .pipe(gulp.dest('./build'))
  .pipe(minify())
  .pipe(gulp.dest('./build/dist'))复制代码


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

name  任务名字,不要有空格

deps  类型:Array

    一个包含任务列表的数组,这些任务会在当前任务前完成。如例:taskname会在name1,task1,name2,task2完成后完成。

fn   该函数定义了task所要执行的操作

gulp.task('taskname', ['name1', 'task1', 'name2', 'task2'], function() {
    gulp.src('').pipe(someplugin()).pipe(gulp.dest('./build'));
});复制代码

异步任务支持:

支持callback

// 在shell中执行一个命令
var exec = require('child_process').exec;
gulp.task('task1', function (cb){
    // 编译task1
    exec('task1 build', function (err) {
        if (err) retrun cb(err); // 返回 error
        cb(); // 完成task1
    })
});复制代码

返回一个steam 

gulp.task('sometask', function (){
    var stream = gulp.src('./js/**/*.js')
        .pipe(minify())
        .pipe(gulp.dest('build'));
    return stream;
});复制代码

返回一个promise

var Q = require('q');

gulp.task('task1', function () {
    var deferred = Q.defer();

    // 执行异步的操作
    setTimeout(function (){
        deferred.resolve();
    });
    return deferred.promise;
});复制代码

   默认,task以最大的并发数执行, 一次性执行所有task不做任何等待。如何创建一个序列化task队列

var gulp = require('gulp');
// 返回一个callback,系统可以知道它什么时候完成
gulp.task('one', function (cb){
    cb(err); // 如果err不是null或undefined,则会停止执行,这样代表执行失败了
});

// 定义一个依赖的task必须在这个task执行之前完成
gulp.task('two', ['one'], function (){
    // 'one'完成
});

gulp.task('default', ['one', 'two']);

复制代码

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

监听文件,并在文件改动时,返回一个EventEmitter来发射change事件。

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

  glob  类型:String or Array

  opts  类型:Object

  tasks  类型:Array

var watcher = gulp.watch('js/**/*.js', ['uglify', 'reload']);
watcher.on('change', function (event){
    console.log(event.path + '' + event.type);
});复制代码

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

  glob  类型:String or Array

  opts  类型:Object    

  cb(event)  类型:Function

gulp.watch('js/**/*.js', function (event){
    console.log(event.path + '' + event.type);
});复制代码

  event.type  类型:String    发生的变动的类型:added,changed或者deleted  

  event.path  类型:String    触发该事件的文件路径


常用插件:

  • gulp-rename  文件重命名

var rename = require('gulp-rename');
gulp.src("./src/main/text/hello.txt") 
  .pipe(rename("main/text/ciao/goodbye.md")) 
  .pipe(gulp.dest("./dist"));    // ./dist/main/text/ciao/goodbye.md
复制代码

  • gulp-uglify  文件压缩

var gulp = require('gulp');
var uglify = require('gulp-uglify');
gulp.task('compress', function (){
    return gulp.src('lib/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('dist'));
});复制代码

  • gulp-concat  文件合并

var concat = require('gulp-concat');
gulp.task('scripts', function (){
    return gulp.src('./lib/*.js')
        .pipe(concat('all.js'))
        .pipe(gulp.dest('./dist/'));
});复制代码

  • gulp-sourcemaps  压缩代码位置标记

var gulp = require('gulp');
var plugin1 = require('gulp-plugin1');
var plugin2 = require('gulp-plugin2');
var sourcemaps = require('gulp-sourcemaps');
gulp.task('javascript', function (){
    gulp.src('src/**/*.js')
        .pipe(sourcemaps.init())
        .pipe(plugin1())
        .pipe(plugin2())
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('dist'));
});复制代码

  • gulp-sass  编译sass

'use strict';
var gulp = require('gulp');
var sass = require('gulp-sass');
sass.compiler = require('node-sass');
gulp.task('sass', function (){
    return gulp.src('./sass/**/*.scss')
        .pipe(sass().on('error', sass.logError))
        .pipe(gulp.dest('./css'));
});
gulp.task('sass:watch', function(){
    gulp.watch('./sass/**/*.scss', ['sass']);
});复制代码
  • gulp-less 编译less
  • gulp-babel  编译es5+
  • gulp-autoprefixer  自动补全css
  • gulp-clean-css  清理编译的css
  • gulp-replace  字符串代替
  • gulp-htmlmin  压缩html
  • gulp-base64  将小图片转成base64格式
  • del  删除文件
  • browser-sync  浏览器同步刷新

参考资料:

    gulp官网



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值