gulp是前端开发过程中自动构建项目的工具,相同作用的还有grunt。构建工具依靠插件能够自动监测文件变化以及完成js/sass/less/html/image/css/coffee等文件的语法检查、合并、重命名、压缩、格式化、浏览器自动刷新、部署文件等功能。

gulp是基于Nodejs的自动运行器,他借鉴了Unix操作系统的管道(pipe)思想,前一级的输出是后一级的输入。下面是具体流程:

1、安装nodejs

nodejs下载地址:https://nodejs.org/

nodejs自带npm模块管理器,安装完成之后打开dos命令窗口输入 node -v就能查看nodejs是否安装成成功

常用的npm命令

npm init——初始化

npm install——安装插件

npm install plugname -g——全局安装

npm install plugname@2.3.0——安装具体某个版本的插件

npm update——更新插件

npm uninstall——卸载插件

常用dos命令

cd 进入某个目录

cd.. 返回上一级

dir 查看列表

cls 清除屏幕

del name 删除文件

md name 新建目录名

rd name 删除目录名

copy con name.txt 新建文件

del name.txt  删除文件

2、全局安装gulp

npm install gulp -g

3、创建本地项目

上面是准备工作,安装完全局gulp之后,cd到项目文件夹安装本地gulp,安装之前要先初始化

npm init

初始化的时候要求你输入一些值,不输的直接回车即可,点击y之后在根目录自动创建了一个package.json文件,这个文件用来存放即将安装的插件name和version,这个文件有什么用呢?当我们把项目拷贝给别人的时候不需要拷贝插件,只需要把项目文件、package.json和gulp.file.js拷贝过去就可以,接收人cd到项目文件目录直接输入npm install即可安装上我们拷贝前安装的各种插件。

4、设计项目目录索引结构

└── src/├── less/    *.less 文件├── sass/    *.scss *.sass 文件├── css/     *.css  文件├── js/      *.js 文件├── fonts/   字体文件└── images/   图片
└── dist/

5、安装各种插件

npm install gulp gulp-imagemin gulp-minify-css gulp-uglify gulp-util gulp-watch-path stream-combiner2 --save-dev

--save-dev这个命令是将安装的插件信息写入package.json文件内的“devDependencies”属性内,插件全部安装完之后package.json的变化为:

"devDependencies": {"gulp": "^3.9.1","gulp-imagemin": "^2.3.0","gulp-minify-css": "^1.2.4","gulp-uglify": "^1.5.3","gulp-util": "^3.0.7","gulp-watch-path": "^0.1.0","stream-combiner2": "^1.1.1"}

插件安装完毕之后会自动创建一个node_modules文件夹,所有插件的依赖都存在这里面。

gulp——本地gulp
gulp-imagemin——图片压缩
gulp-minify-css ——css压缩
gulp-uglify ——js压缩
gulp-util ——控制台代码着色
gulp-watch-path ——文件很多时编辑那个哪个压缩,不会全部压缩(获取改变的文件的src和dest路径)
stream-combiner2——有些 gulp 任务编译出错会终止 gulp.watch,使用 gulp-watch-path 配合stream-combiner2 可避免这种情况

6、gulp如何使用

控制台输入gulp的时候首先找寻gulpfile.js文件,在找寻default任务,所以我们应该手动新建一个名为gulpfile.js的js文件,将任务写在里面。具体文件目录为:

gulp一共五中方法:

gulp.task()——新建任务

gulp.src()——获取文件源地址

gulp.dest()——文件输出地址

gulp.run()——运行任务

gulp.watch()——监听文件修改

7、编写gulpfile.js文件

(1)引入插件变量

var gulp = require('gulp'),uglify = require('gulp-uglify'),minifycss = require('gulp-minify-css'),imgmin = require('gulp-imagemin'),gutil = require('gulp-util'),watchPath = require('gulp-watch-path'),combiner = require('stream-combiner2');

(2)新建代码着色与显示错误日志方法,这个方法用到了gulp-util和stream-combiner2插件

var handleError=function(err){console.log('\n');gutil.log('fileName: '+gutil.colors.red(err.fileName));gutil.log('lineNumber: '+gutil.colors.red(err.lineNumber));gutil.log('message: ' + err.message);gutil.log('plugin: ' + gutil.colors.yellow(err.plugin));
};

(3)新建js批量压缩任务

gulp.task('script',function(){//script时自定义的
//将文件的源路径和发布路径赋值给相应变量var srcJsPath='js/*.js';var destJsPath='dist/js/';var combined = combiner.obj([gulp.src(srcJsPath),//获取文件源地址uglify(),//执行压缩gulp.dest(destJsPath)//将压缩的文件发布到新路径]);combined.on('error', handleError);//打印错误日志
});

这种写法需要css目录下有很多css文件,只要改变了一个点击保存的时候gulp会把所有css文件都会压缩一遍,为了提高性能我们可以利用gulp-watch-path插件只压缩/发布修改的文件

gulp.task('watchjs',function(){gulp.watch('js/*.js',function(event){var paths=watchPath(event,'js/','dist/js/');//打印修改类型和路径gutil.log(gutil.colors.green(event.type) + ' ' + paths.srcPath);gutil.log('Dist: ' + paths.distPath);//获取错误信息,继续执行代码var combined = combiner.obj([gulp.src(paths.srcPath),uglify(),gulp.dest(paths.distDir)]);combined.on('error', handleError);});
});

(4)编写default任务和监听任务

新建批量任务还是监听修改任务根据项目中实际需要去写,等我们写好很多任务之后就需要写入default中,default写好之后只需要在dos窗口写入gulp就可以自动执行任务

gulp.task('default',function(){//默认执行的方法,引号内的内容对应上面task写的内容gulp.run('watchjs','css','images');//监控jsgulp.watch('js/*.js',['watchjs']);//监控cssgulp.watch('css/*.css',['css']);//监控imggulp.watch('images/*.*',['images']);
});

如果不想执行默认任务只执行js单文件压缩任务只需要输入 gulp watchjs即可。控制台输入为下图:

此时,gulp处于监听状态,如果要取消需要按ctrl+c 回车即可。

补充:

将本文件夹下的文件发布到其他盘

//注意src的参数
gulp.task('distCopyEclipse',function(){return gulp.src('src/cssEclispe/*',{nodir:true}).pipe(cached('distCopyEclipse')).pipe(gulp.dest('D:/workSpace/makerplateform/webapp/instantcommunication/theme/css')).pipe(gulp.dest('D:/tomcat7/webapps/makerplateform/instantcommunication/theme/css'));
});

使用gulp构建一个项目相关推荐

  1. Jenkins 如何构建一个项目

    1.进入jenkins.点击新建. 2. 输入项目名称.选择构建一个自由风格的软件项目,点击OK. 3. 进入后是这样的. 4. 此处都根据自己的需要进行选择. 5. 选择构建,增加构建步骤中选择 通 ...

  2. 【快速入门Dfinity】有了转译得到的wasm文件,怎么才能构建一个项目呢?

    目录 1.Package the binary so dfx can install and run it: 2.Test the app locally: 3.Stop and delete the ...

  3. idea构建springboot项目右边没有maven_写给新手看的 Spring Boot 入门学习指南

    什么是 Spring Boot ? 解释一下:Spring Boot 可以构建一切.Spring Boot 设计之初就是为了最少的配置,最快的速度来启动和运行 Spring 项目.Spring Boo ...

  4. Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(二)安装 nodejs 环境以及 vue-cli 构建初始项目

    Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(二)安装 nodejs 环境以及 vue-cli 构建初始项目 在上一篇<Vue2+VueRouter2+ ...

  5. Jenkins入门教程之--构建软件项目

    Jenkins可以用于执行典型的构建服务器工作,例如执行连续/官方/每晚构建,运行测试或执行一些重复的批处理任务.这在Jenkins被称为"自由式软件项目". 设置项目 转到Jen ...

  6. Gulp 自动化的项目构建工具

    在很多场合都会听到前端工和 node 程师推荐 Grunt 来实现项目的自动化,自动化可以自动完成 javascript/coffee/sass/less 等文件的的测试.检查.合并.压缩.格式化.部 ...

  7. 用gulp构建你的前端项目

    前言 前端技术发展日新月异,随着模块化.组件化的提出,前端变得越来越复杂,静态资源越来越多,那么对静态资源的处理,如压缩,合并,去掉调试信息.. 如果还是人工去处理,效率非常之低且还容易出错,于是自动 ...

  8. 手把手教你构建一个web前端项目,全网最详细教程!

    为什么80%的码农都做不了架构师?>>>    1. 选择现成的项目模板还是自己搭建项目骨架 搭建一个前端项目的方式有两种:选择现成的项目模板.自己搭建项目骨架. 选择一个现成项目模 ...

  9. 构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...

    构建一个react项目 by Samer Buna 通过Samer Buna 您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩. (Do you want to learn more ...

  10. 如何构建一个成功的AI PoC(概念验证项目)

    2020-01-13 18:50:11 作者:Arnault 编译:ronghuaiyang 导读 如何把你的人工智能想法转化为可用的软件. 建立一个 AI PoC 是困难的.在这篇文章中,我将解释我 ...

最新文章

  1. shell编程之数学运算
  2. webpack的入口起点(EntryPoints)
  3. 博客积分规则 博客等级
  4. php ini include,php.ini文件中的include_path设置
  5. mysql 读取comment_Mysql 获取表的comment 字段
  6. java spring包_java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式...
  7. [No000089]String的(补空位)左对齐,(补空位)右对齐
  8. jdbc多sql语句一次执行(allowMultiQueries=true)
  9. yum安装Apache2.4
  10. php 类的变量,PHP 变量与类
  11. C语言--输入一个数判断是否为素数(多种方法)
  12. 清理tomcat服务器日志文件,Tomcat日志配置与清理
  13. xshell 使用教程
  14. 什么是直方图,如何使用它来改善照片?
  15. 基于STM32的智能抽油烟机系统
  16. 关于《算法的乐趣》历法一章演示程序错误的说明
  17. C语言代码质量与架构调整(三)
  18. oracle升级版本矩阵图
  19. mysql下载教程(如何从官方网站下载)
  20. intellij idea 创建动态web项目

热门文章

  1. Periodic Strings (求HoHoHo字符串最小周期)
  2. oracle 时间天数计算,oracle计算连续登陆/上班天数
  3. 企业实战之部署Solarwinds Network八部众
  4. [ctf web][csaw-ctf-2016-quals]mfw writeup
  5. [proxy:0:0@WORKSTATION-DEV] HYDU_sock_write (utils/sock/sock.c:256): write error (Broken pipe)
  6. python编程游戏-9个Python编程小游戏,有趣又好玩,简直太棒了
  7. 都说谷歌浏览器翻译插件好用,这些必不可少
  8. 【人脸表情识别】基于视频的人脸表情识别数据集与基本方法
  9. (七)设定目标:原理与方法
  10. js实现漂亮的雪花飘落效果