前端构建工具--Gulp

Gulp是用node.js写的一个前端构建工具。

可以用来sass转css,es6转es5,jade模板转html,图片压缩,同步文件,清除多余文件等工作。

1.安装

npm install -g gulp --save

2.Gulpfile.js配置

对于gulp的配置,主要方法有:

  • gulp.src //来源
  • gulp.dest //目标
  • gulp.pipe //管道
  • gulp.watch //监视文件系统,文件改动时自动处理
  • gulp.task //任务

具体用法移步官网。

先看一个例子

//引入gulp和gulp-ruby-sass插件
var gulp = require('gulp')
    sass = require('gulp-ruby-sass');

//路径配置
const paths = {
    sass: 'app/**/*.scss',//匹配目录及其子目录的所有后缀名为scss的文件
    src: 'app'
};


//创建sass任务
gulp.task('sass', function () {
    return sass(paths.sass, {
        sourcemap: true,//sourcemap  信息文件  压缩后代码对应压缩前代码的位置
        stopOnError: true,  //除错
        compass: true  //压缩
    })
        .pipe(plumber())
        .on('error', sass.logError)
        .pipe(sourcemaps.write())   //生成sourcemap
        .pipe(sourcemaps.write('maps', {  
            includeContent: false,  //编译之后不包含源文件
            sourceRoot: 'source'  //includeContent: false 后设置的位置
        }))
        .pipe(gulp.dest(paths.src));//输出
});

//监听任务
gulp.task('watch', ['lint'], function () {
    //一旦发生变动,就运行指定的任务
    gulp.watch(paths.sass, ['sass']);
});

例子中,我们引入了gulp和gulp-ruby-sass,创建名为sass的任务,此任务对文件进行压缩,除错,生成sourcemap文件并输出。

我们甚至可以输出一个简单的操作指南。

gulp.task('help',function(){
    console.log('   gulp build          文件打包');
    console.log('   gulp watch          文件监控打包');
    console.log('   gulp help           gulp参数说明');
    console.log('   gulp server         测试server');
    console.log('   gulp -p             生产环境(默认生产环境)');
    console.log('   gulp -d             开发环境');
});

在控制台输入命令:gulp help

结果:
这里写图片描述

3.Gulpfile.js插件

了解了几只有用的插件。


var gulp = require('gulp'),
    //sass -> css
    sass = require('gulp-ruby-sass'),
    //jade ->  html
    jade = require('gulp-jade'),  
    //sass -> css
    sass = require('gulp-ruby-sass'), 
    //错误检查
    eslint = require('gulp-eslint'), 
    //处理JS时,生成SourceMap 
    sourcemaps = require('gulp-sourcemaps'),
    // 6to5  es6代码转换成es5代码
    babel = require('gulp-babel'), 
    //文件名加md5
    rev = require('gulp-rev'), 
    //rev之后的文件重写
    revReplace = require('gulp-rev-replace'),
    //清除无用文件
    clean = require('gulp-clean'),  
    //混淆js
    uglify = require('gulp-uglify'),
    //css压缩  
    minifyCss = require('gulp-minify-css'),
    //顺序控制流
    sequence = require('gulp-sequence'),
    //自动处理全部错误信息防止因为错误而导致 watch 不正常工作
    plumber = require('gulp-plumber'), 
     //文件连接 
    useref = require('gulp-useref'), 
    //if判断
    gulpIf = require('gulp-if'),
     //改名
    rename = require('gulp-rename');  

(1)gulp-sequence顺序流程控制

为什么实现一个同步流程还要控制?

下例:

gulp.task('init',['init_a','init_b','init_c'],function(){

    console.log('init end');

});
gulp.task('init_a',function(){

    setTimeout(function(){
       console.log('init_a end');

    },200);

});
gulp.task('init_b',function(){

    setTimeout(function(){
        console.log('init_b end');

    },50);

});

gulp.task('init_c',function(){

    setTimeout(function(){
        console.log('init_c end');

    },100);

});

在控制台输入命令:gulp init
运行结果:
这里写图片描述

init_b先执行完毕,说明是异步执行的。

其实我这么测试也不对的,真实的情况是,可能init_a/b/c下有很多小任务,它们之间也是异步的。

使用流程控制好了:

gulp.task('init2', sequence('init_a', 'init_b', 'init_c'));

(2)gulp-sourcemaps

处理压缩时,添加map,源文件和压缩后文件之间代码行的一一对应。报错时就可以找到源文件的错误点。

(3)gulp-babel

可以编写es6代码,最终生成es5兼容代码执行了。。

(4)代码压缩 gulp-uglify

压缩JS曾经很麻烦,但现在完全是简单自动化的。

(5) gulp-eslint

遵循代码风格、发现错别字、有助于避免错误。Gulp 可以查看你所有的 JS 文件,并在你每次保存的时候运行 linter。需要把你的 JS 代码放在单独的 .js 文件中才能运行 linter 。

从石器时代进入现在世界了。。。站在了巨人的肩膀上

更多插件,请移步搜索之:
来这里探索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值