gulp

简介:

    gulp有着丰富的插件库,她能自动化地完成javascript、coffee、sass、less、html、image、css 等文件的的测试、检查、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤,能快速提高我们项目的开发效率。

1.gulpfile.js基本配置示例:

    通过此配置示例可以让我们快速编写js,css代码并打包压缩文件,减少文件资源大小。

//导入工具包 require('node_modules里对应模块')
var gulp = require('gulp'); //本地安装gulp所用到的地方
var sass = require('gulp-sass');//将scss文件编译成浏览器可识别的css
var minifycss = require('gulp-minify-css');//压缩css文件,减小文件大小,并给引用url添加版本号避免缓存
var cleancss = require('gulp-clean-css');//压缩css文件,减小文件大小,并给引用url添加版本号避免缓存
var livereload = require('gulp-livereload');//监听文件发生变化时,浏览器自动刷新页面
var babel = require('gulp-babel');//将ES6编译成ES5
var uglify = require('gulp-uglify');//压缩js
var autoprefixer = require('gulp-autoprefixer');//根据设置浏览器版本自动处理浏览器前缀
//定义一个sass任务(自定义任务名称)
gulp.task('sass', function () {
    gulp.src('./sass/**/*.scss') //该任务针对的文件
        .pipe(sass()) //该任务调用的模块
        .pipe(cleancss({
            advanced: false,//类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
            compatibility: 'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
            keepBreaks: true,//类型:Boolean 默认:false [是否保留换行]
            keepSpecialComments: '*'
            //保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀
        }))
        .pipe(autoprefixer({
            browsers: ['last 2 versions', 'Android >= 4.0'],
            cascade: true, //是否美化属性值 默认:true 
            remove:true //是否去掉不必要的前缀 默认:true 
        }))
        .pipe(gulp.dest('./css')) //将会在css文件夹下生成index.css(复制文件目录及文件)
        .pipe(livereload());//监听文件发生变化时,浏览器自动刷新页面
});

//定义一个babel任务(自定义任务名称)编译js
gulp.task('babel', function () {
    gulp.src('./src/**/*.js') //该任务针对的文件
        .pipe(babel({
            presets: ['es2015']
        })) //该任务调用的模块
        .pipe(livereload())//监听文件发生变化时,浏览器自动刷新页面
        .pipe(uglify({ //压缩js
            // mangle: false,//类型:Boolean 默认:true 是否修改变量名
            // compress: true//类型:Boolean 默认:true 是否完全压缩
        }))
        .pipe(gulp.dest('./js')) //将会在css文件夹下生成index.css(复制文件目录及文件)
});


gulp.task('auto', function () {
    gulp.watch('./sass/**/*.scss', ['sass']);
    gulp.watch('./src/**/*.js', ['babel']);
    // livereload.listen();
});

gulp.task('default',['sass','auto','babel']); //定义默认任务

// 通配符路径匹配示例:
// “src/a.js”:指定具体文件;
// “*”:匹配所有文件    例:src/*.js(包含src下的所有js文件);
// “**”:匹配0个或多个子文件夹    例:src/**/*.js(包含src的0个或多个子文件夹下的js文件);
// “{}”:匹配多个属性    例:src/{a,b}.js(包含a.js和b.js文件)  src/*.{jpg,png,gif}(src下的所有jpg/png/gif文件);
// “!”:排除文件    例:!src/a.js(不包含src下的a.js文件);

//gulp.task(name[, deps], fn) 定义任务  name:任务名称 deps:依赖任务名称 fn:回调函数
//gulp.src(globs[, options]) 执行任务处理的文件  globs:处理的文件路径(字符串或者字符串数组) 
//gulp.dest(path[, options]) 处理完后文件生成路径

配置文件详解:

执行一个任务分三步走:

1.导入工具包 require('node_modules里对应模块')

var gulp = require('gulp'); //本地安装gulp所用到的地方

2.定义一个任务(自定义任务名称)

gulp.task('test', function () {
  gulp.src('./sass/**/*.scss') //该任务针对的文件
      .pipe(test())
      .pipe(gulp.dest('./css')) //将会在css文件夹下生成.css文件(复制文件目录及文件)
})

3.执行任务:
cmd命令提示符

gulp test

如果只是简单的配置了上面部分,每当我们修改了代码都需要重新执行命令gulp test,而且如果有多个任务就要执行多个命令,为了避免这么繁琐的操作可以加上如下配置:

gulp.task('auto', function () {
    gulp.watch('./src/**/*.js', ['test']);
});
gulp.task('default',['auto','test']); //定义默认任务

这样我们只需要输入一次命令gulp,就可以监听到每次代码的修改,自动帮我们编译,减少了很多繁琐的操作。

2.使用gulp编译css

1.gulp-sass的使用:

1.简介:SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。

2.本地安转:npm install gulp-less --save-dev

3.配置gulpfile.js

1.配置:

//导入sass工具包
var sass = require('gulp-sass');

//定义一个sass任务(自定义任务名称)
gulp.task('sass', function () {
    gulp.src('./sass/**/*.scss') //该任务针对的文件
        .pipe(sass({
        outputStyle: 'compact'  //代码风格
      // nested:嵌套缩进的css代码,它是默认值。
      // expanded:没有缩进的、扩展的css代码。
      // compact:简洁格式的css代码。
      // compressed:压缩后的css代码。
        })) //该任务调用的模块
        .pipe(gulp.dest('./css')) //将会在css文件夹下生成index.css(复制文件目录及文件)
});

2.sass使用示例:

$blue : #1875e7; 
.class {
    font-size: 12px;
}
.main{
    color:$blue;
    @if 1 + 1 == 2 { 
        border: 1px solid red;
    }@if 5 < 3 { 
        border: 2px dotted blue; 
    }
    .parent{
        margin-left:10px + 20px;
        &:hover{
            cursor: pointer;
            @extend .class;
        }
    }
}

3.执行任务:

命令提示符:gulp sass

4.编译结果:

mark

2.gulp-minify-css的使用:

1.插件介绍:压缩css文件,减小文件大小,并给引用url添加版本号避免缓存

2.本地安转:npm install gulp-minify-css --save-dev。

3.配置gulpfile.js

1.配置

var minifycss = require('gulp-minify-css');

//定义一个sass任务(自定义任务名称)
gulp.task('sass', function () {
    gulp.src('./sass/**/*.scss') //该任务针对的文件
        .pipe(sass({
            outputStyle: 'compact'  //代码风格
        // nested:嵌套缩进的css代码,它是默认值。
        // expanded:没有缩进的、扩展的css代码。
        // compact:简洁格式的css代码。
        // compressed:压缩后的css代码。
        })) //该任务调用的模块
        .pipe(minifycss({
            advanced: false,//类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
            compatibility: 'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
            keepBreaks: true,//类型:Boolean 默认:false [是否保留换行]
            keepSpecialComments: '*'
            //保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀
        }))
        .pipe(gulp.dest('./css')) //将会在css文件夹下生成index.css(复制文件目录及文件)
});

2.使用示例:
mark

4.执行任务:

命令提示符:gulp sass

5.编译结果:

mark
编译之后的css文件被压缩了

3.gulp-autoprefixer:

1.插件介绍:根据设置浏览器版本自动处理浏览器前缀

2.本地安转:npm install gulp-autoprefixer --save-dev。

3.配置gulpfile.js

1.配置

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

//定义一个sass任务(自定义任务名称)
gulp.task('sass', function () {
    gulp.src('./sass/**/*.scss') //该任务针对的文件
        .pipe(sass({
            outputStyle: 'compact'  //代码风格
        // nested:嵌套缩进的css代码,它是默认值。
        // expanded:没有缩进的、扩展的css代码。
        // compact:简洁格式的css代码。
        // compressed:压缩后的css代码。
        })) //该任务调用的模块
        .pipe(autoprefixer({
            browsers: ['last 2 versions', 'Android >= 4.0'],
            cascade: true, //是否美化属性值 默认:true 
            remove:true //是否去掉不必要的前缀 默认:true 
        }))
        .pipe(gulp.dest('./css')) //将会在css文件夹下生成index.css(复制文件目录及文件)
});

2.使用示例:
mark

4.执行任务:

命令提示符:gulp sass

5.编译结果:

浏览器中的编译结果:
mark

4.使用gulp编译js

1.gulp-babel的使用:

1.介绍:gulp-babel是可以将ES6编译成大多数浏览器可识别的ES5规范

2.本地安转:

1.npm install gulp-babel --save-dev
2.npm install babel-preset-es2015 --save-dev

3.配置gulpfile.js

1.配置:

//导入babel工具包
var less = require('gulp-babel');

//定义一个babel任务(自定义任务名称)
//定义一个babel任务(自定义任务名称)编译js
gulp.task('babel', function () {
    gulp.src('./src/**/*.js') //该任务针对的文件
        .pipe(babel({
            presets: ['es2015']
        })) //该任务调用的模块
        .pipe(gulp.dest('./js')) //将会在css文件夹下生成index.css(复制文件目录及文件)
});

2.ES6使用示例:

mark

4.执行任务:

命令提示符:gulp babel

5.编译结果:

mark

5.gulp-uglify的使用:

1.介绍:压缩js代码

2.本地安转: npm install gulp-uglify --save-dev

3.配置gulpfile.js

1.配置:

//导入uglify工具包
var uglify = require('gulp-uglify');

//定义一个babel任务(自定义任务名称)编译js
gulp.task('babel', function () {
    gulp.src('./src/**/*.js') //该任务针对的文件
        .pipe(babel({
            presets: ['es2015']
        })) //该任务调用的模块
        .pipe(uglify({ //压缩js
         // mangle: false,//类型:Boolean 默认:true 是否修改变量名
         // compress: true//类型:Boolean 默认:true 是否完全压缩
        }))
        .pipe(gulp.dest('./js')) //将会在css文件夹下生成index.css(复制文件目录及文件)
});

2.ES6使用示例:

mark

4.执行任务:

命令提示符:gulp babel

5.编译结果:

mark

gulp插件库还有其他很多优秀的插件,可以根据自己的需要引入。
此dome在我的github上,可以下载自行查看https://github.com/xiongcao/project-gulp

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务