自动化构建工具—gulp的简单配置
把之前用到的gulp总结整理下,有时候说不出来的,就写出来吧,做个笔记,以后也可以慢慢补充
gulp有两个优点:
1、基于流,效率非常高 简言之,把产生的中间文件放在内存中进行处理,直到最后一步才生成文件,操作文件
2、任务化,编写成一个个小任务 然后合并执行任务 逻辑清晰 可读性好
gulp有两个功能很重要——压缩、合并,合并之后减少Http请求,压缩后减少带宽
常用的api(函数):src、dest、watch、task、pipe
- //引入模块
- 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的简单配置的更多相关文章
- 前端自动化构建工具gulp的使用总结
前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...
- 前端自动化构建工具--Gulp&&Webpack
前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...
- 前端自动化构建工具——gulp
gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...
- 前端自动化构建工具 Gulp 使用
一个月没写博客了,今天有时间,就写个gulp的入门使用吧.. 简介:gulp是一个前端自动化构建工具,可以实现代码的检查.压缩.合并……等等,gulp是基于Node.js的自动任务运行器 一.安装No ...
- 前端自动化构建工具 gulp 学习笔记 一、
一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ...
- 基于流的自动化构建工具------gulp (简单配置)
项目上线也有一阵子,回头过来看了看从最初的项目配置到开发的过程,总有些感慨,疲软期,正好花点时间,看看最初的配置情况 随着前端的发展,前端工程化慢慢成为业内的主流方式,项目开发的各种构建工具,也出现了 ...
- 前端自动化构建工具-gulp
gulp 和grunt这两个是我知道的自动构建工具,但是说实话都没在项目中用过,不太清楚自动化构建是什么意思, 1.grunt和gulp有什么相同点和不同点? (1).易于使用:采用代码优于配置策略, ...
- 前端自动化构建工具——gulp环境搭建教程
gulp是前端工程化的工具,它可以对html,css,js等代码和图片进行压缩,也可以对sass和less等预处理语言进行编译,代码部署.gulp学起来简单,用起来方便,大大提高我们工作效率. 这里可 ...
- 自动化构建工具gulp
1.优点 1.1 易于使用 通过代码优于配置的策略,gulp让简单的任务简单,复杂的任务可管理 1.2 构建快速 利用node.js流的威力,你可以快速构建项目并减少频繁的IO操作 1.3 插件高质 ...
随机推荐
- spring mvc+mybatis+maven集成tkmapper+pagehelper
<!-- maven tkmapper引入--> <dependency> <groupId>tk.mybatis</groupId> <arti ...
- .13-Vue源码之patch(3)(终于完事)
怎么感觉遥遥无期了呀~这个源码,跑不完了. 这个系列写的不好,仅作为一个记录,善始善终,反正也没人看,写着玩吧! 接着上一节的cbs,这个对象在初始化应该只会调用create模块数组方法,简单回顾一下 ...
- VS2008 C++ 利用WinHttp API获取任意Http网址的源码
最近一直在看有关Http的知识,对其基本的理论知识已经有所掌握,想通过一个C++具体的例子进行实际操作..于是上网查找了很多资料,发现在Windows系统上,可以通过WinHttp API接口开啊Ht ...
- HDU1166 敌兵布阵(线段树)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...
- pandas数据结构练习题(部分)
更多函数查阅http://pandas.pydata.org/pandas-docs/stable/10min.htmlimport pandas as pd#两种数据结构from pandas im ...
- Java IO编程全解(五)——AIO编程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7794151.html 前面讲到:Java IO编程全解(四)--NIO编程 NIO2.0引入了新的异步通道的 ...
- Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0,"解决办法
这是因为先安装了 .NET Framework 4,随后启用了 .NET Framework 3.5 WCF HTTP 激活,则会发生此错误. 只需要已管理员用户在cmd中运行aspnet_regii ...
- 【1】maven来管理我的SSM项目
新建个maven项目,第一步当然是配置好自己需要的jar包,maven使用pom.xml管理 并不是每一个都有用,但是都是常见jar,方便以后自己调用来查找 <project xmlns=&qu ...
- VIM于换行EOL的思考
\n LF 0A 将当前光标切换到下一行(不一定行首)\r CR OD 将当前光标置于行首 在windows与unix系统中,unix将\n代表换行并置于行首,而windows保持原意.即unix:\ ...
- SDN/NFV趋势思考点滴
一.为什么控制器.网管OSS融合? 1.云化是趋势:传统网络架构管理规模达到瓶颈:微服务架构通过扩充多实例解决管理规模问题.2.NFV是趋势:设备运营商传统网元在云化,以软件形式提供VNF:3.运维体 ...