自动化构建工具—gulp的用法简单总结

摘要:
总结并整理以前使用的Gulp。有时候,如果你说不出来,就把它写下来并记下来。稍后,您可以慢慢添加cnpmi-save-devGulp,将nodejs模块写入package.json配置文件。当您将其保存到git仓库时,只需保存package.json即可使用Gulp模块:Gulp clean/Gulp concat/Gulp connect/Gulp cssmin/Gulp less/gul

  把之前用到的gulp总结整理下,有时候说不出来的,就写出来吧,做个笔记,以后也可以慢慢补充

  cnpm i --save-dev gulp 把nodejs模块写到package.json配置文件中,当保存到git仓库时,只需保存package.json即可
 
  用到的gulp模块有:gulp-clean/gulp-concat/gulp-connect/gulp-cssmin/gulp-less/gulp-load-plugins/gulp-uglify/open
    注:安装node模块是可批量安装的  cnpm i --save-dev gulp-clean gulp-concat....
 
  gulp-plumber:当编译css or js时发生错误,它不会立即中断线程,而只是抛出错误

  gulp有两个优点:

    1、基于流,效率非常高  简言之,把产生的中间文件放在内存中进行处理,直到最后一步才生成文件,操作文件

    2、任务化,编写成一个个小任务 然后合并执行任务 逻辑清晰 可读性好

  gulp有两个功能很重要——压缩、合并,合并之后减少Http请求,压缩后减少带宽

  常用的api(函数):src、dest、watch、task、pipe  

    src:     读取文件、文件夹
    dest:     生成文件、写文件
    watch:监控文件
    task:定制任务
    pipe:用流的方式处理文件
 
  贴出gulpfile.js的文件编写:
  
//引入模块
var gulp = require('gulp');
var $ = require('gulp-load-plugins')(); //其他的gulp模块就可以直接通过$来引用,而不需再声明变量
var open = require('open');
 
//全部变量来定义目录路径
var app = {
    srcPath:'src/',        //源代码放置的位置
    devPath:'build/',    //整合之后的文件,开发目录
    prdPath:'dist/'        //用于生产、部署
};

//把bower下载的第三方创建拷贝到生产环境目录
gulp.task('lib',function(){
    gulp.src('bower_components/**/*.js')      //对bower_..下面的子文件进行深度遍历,读取文件
    .pipe(gulp.dest(app.devPath+'vendor'))    //操作:写文件
    .pipe(gulp.dest(app.prdPath+'vendor'))
    .pipe($.connect.reload())//构建完,刷新浏览器进行实时预览

});

gulp.task('html',function(){
    gulp.src(app.srcPath+'**/*.html')
    .pipe(gulp.dest(app.devPath))
    .pipe(gulp.dest(app.prdPath))
    .pipe($.connect.reload())

});

gulp.task('json',function(){
    gulp.src(app.srcPath+'data/**/*.json')
    .pipe(gulp.dest(app.devPath+'data'))
    .pipe(gulp.dest(app.prdPath+'data'))
    .pipe($.connect.reload())

});

gulp.task('less',function(){
    gulp.src(app.srcPath+'style/index.less')
    .pipe($.plumber()) //修复了pipe处理异常的bug,让任务执行更平滑
    .pipe($.less())
    .pipe(gulp.dest(app.devPath+'css'))
    .pipe($.cssmin())
    .pipe(gulp.dest(app.prdPath+'css'))
    .pipe($.connect.reload())

});

gulp.task('js',function(){
    gulp.src(app.srcPath+'script/**/*.js')
      .pipe($.plumber())
    .pipe($.concat('index.js'))
    .pipe(gulp.dest(app.devPath+'js'))
    .pipe($.uglify())
    .pipe(gulp.dest(app.prdPath+'js'))
    .pipe($.connect.reload())

});

gulp.task('image',function(){
    gulp.src(app.srcPath+'image/**/*')
    .pipe($.plumber())
    .pipe(gulp.dest(app.devPath+'image'))
    .pipe($.imagemin())
    .pipe(gulp.dest(app.prdPath+'image'))
    .pipe($.connect.reload());

});

gulp.task('build',['image','js','less','json','html','lib']);

//每次发布的时候,把之前的目录清除,避免旧的文件对当前项目造成影响
gulp.task('clean',function(){  //构架任务
    gulp.src([app.devPath, app.prdPath])
    .pipe($.clean());

});

//编写个服务器
gulp.task('serve',['build'],function(){
    $.connect.server({
        root:[app.devPath],
        livereload:true,    //适用于高级浏览器,自动刷新浏览器,ie就不支持
        port:1234

    });
    open('http://localhost:1234');

    //自动构建
    gulp.watch('bower_components/**/*',['lib']);
    gulp.watch(app.srcPath+'**/*',['html']);
    gulp.watch(app.srcPath+'data/**/*',['json']);
    gulp.watch(app.srcPath+'style/**/*',['less']);
    gulp.watch(app.srcPath+'script/**/*',['js']);
});

gulp.task('default',['serve'])

免责声明:文章转载自《自动化构建工具—gulp的用法简单总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇源码剖析——深入Windows句柄本质Java-Class-@I:io.swagger.annotation.ApiOperation.java下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pywinauto客户端自动化---pywinauto初始

目前流行的自动化就是web,app,接口算是目前最主流的测试内容了,那么如果让做安装windows上的客户端自动化呢?是不是一脸懵?今天安静给大家介绍python的第三方库,可以帮助我们做客户端的自动化 pywinauto pywinauto是一组用于自动化Microsoft Windows GUI的python模块。 最简单的是,它允许您将鼠标和键盘操作...

WPF简介

  要赢得世界,必须在恰当的时间做出恰当的事。这一点,微软做到了。历经微软 DOS,Win 31, Windows 95, Windows 98, Windows 2000, Windows XP, 一路走来,一次比一次热闹,一个比一个精彩、炫丽。Windows Vista的宣传更是轰轰烈烈,喧嚣日上。初见Windows Vista,都会被它的酷炫界面所...

Oracle数据库之二 Oracle的下载与安装

二、Oracle 的下载与安装 2.1、Oracle 简介 Oracle 公司是全球最大的信息管理软件及服务供应商,成立于 1977 年,主要的业务是推动电子商务平台的搭建。Oracle 公司有自己的服务器、数据库、开发工具、编程语言,在行业软件上还有企业资源计划(ERP)软件、客户关系管理(CRM)软件、人力资源管理软件(HCM)等大型管理系统,所以...

java 通过 SmbFile 类操作共享文件夹

添加依赖 在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。 <dependency> <groupId>jcifs</groupId> <artifactId>jcifs</artifactId> <version>...

ubuntu18.04server服务器系统下为python安装虚拟显示器 (使用jupyter notebook在web端播放openai的gym下保存的运行视频——需安装ipython)

1. 安装xvfb sudo apt-get install xvfb Xvfb是流行的虚拟现实库,可以使很多需要图形界面的程序虚拟运行。 2. 安装pyvirtualdisplay pyvirtualdisplay 是Xvfb的 python 封装。 pip install pyvirtualdisplay 3. 在 Ubuntu 上安装OpenGL...

AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI

AWTK = Toolkit AnyWhere AWTK是吸取了FTK和CanTK的精华,重新开发的GUI,计划分以下几个阶段实施: 第一阶段专注于嵌入式系统,到达并超越TouchGfx/Embedded Wizard的功能。计划在2018/9底完成。 第二阶段用AWTK本身开发界面编辑器(或组态软件IDE),从而验证AWTK支持PC软件开发的能力。计划...