gulp教程_从入门到项目中快速上手使用方法


Posted in Javascript onSeptember 14, 2017

gulp是什么?

gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。在 Web 前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”

一、安装gulp与压缩js文件

命令:

npm install gulp -g

npm install gulp --save-dev

初始化项目package.json的配置:npm init --yes

创建项目的目录结构

demo2
 -----dist
 -----src
     -css
     -img
     -js
 -----gulpfile.js
 -----package.json

在js目录下新建文件( lib.js )

var Oper = {
   add : function( n1, n2 ){
     return n1 + n2;
   },
   sbb : function( n1, n2 ){
     return n1 - n2;
   }
 }

安装压缩js的插件: npm install gulp-uglify --save-dev,

然后在gulpfile.js中,输入任务处理代码

var gulp = require( 'gulp' );
 var uglify = require( 'gulp-uglify' );
 
 gulp.task('min-js', function() {
   gulp.src('src/js/*.js')
     .pipe( uglify() )
     .pipe( gulp.dest('dist/js') );
 });

gulp.task(name, fn) - 定义任务,第一个参数是任务名,第二个参数是任务内容。

gulp.src(path) - 选择文件,传入参数是文件路径。

gulp.dest(path) - 输出文件

gulp.pipe() - 管道,你可以暂时将 pipe 理解为将操作加入执行队列

在命令行执行任务: gulp min-js

就会在 dist/js/lib.js 生成压缩文件

var Oper={add:function(n,r){return n+r},sbb:function(n,r){return n-r}};

在demo2目录下创建index.html,输入以下测试代码

<script src="./dist/js/lib.js"></script>
   <script>
     alert( Oper.add( 100, 200 ) );
   </script>

发现压缩好的lib.js文件是可以正常使用的

二、压缩css文件

安装插件: npm install gulp-clean-css --save-dev

demo2/src/css下新建文件style.css

html,body {
  margin:0;
  padding:0;
}
li {
  list-style-type:none;
}
a{
  text-decoration: none;
  color:#666;
}

在gulpfile.js文件中添加压缩css的任务

var gulp = require( 'gulp' );
var uglify = require( 'gulp-uglify' );
var cleanCSS = require( 'gulp-clean-css' );

gulp.task('min-js', function() {
  gulp.src('src/js/*.js')
    .pipe( uglify() )
    .pipe( gulp.dest('dist/js') );
});

gulp.task('min-css', function() {
  gulp.src('src/css/*.css')
    .pipe( cleanCSS() )
    .pipe( gulp.dest('dist/css') );
});

然后在命令行执行gulp min-css任务 就会在dist/css生成style.css压缩文件

body,html{margin:0;padding:0}li{list-style-type:none}a{text-decoration:none;color:#666}

三、编译less文件

安装插件:npm install gulp-less --save-dev

在src/css下面新建style.less文件

@c1 : green;
@c2 : red;
div {
  width:200px;
  height:200px;
  background:@c1;
  div {
    background:@c2;
    transition:all ease 1s;
  }
}

gulpfile.js中添加任务:

var gulp = require( 'gulp' );
var uglify = require( 'gulp-uglify' );
var cleanCSS = require( 'gulp-clean-css' );
var less = require('gulp-less');

gulp.task('min-js', function() {
  gulp.src('src/js/*.js')
    .pipe( uglify() )
    .pipe( gulp.dest('dist/js') );
});

gulp.task('min-css', function() {
  gulp.src('src/css/*.css')
    .pipe( cleanCSS() )
    .pipe( gulp.dest('dist/css') );
});

gulp.task( 'compile-less', function(){
  gulp.src( 'src/css/*.less' )
    .pipe( less() )
    .pipe( gulp.dest( 'dist/less' ) );
} );

执行任务: gulp compile-less,在dist/less中生成style.css文件

div {
  width: 200px;
  height: 200px;
  background: green;
 }
 div div {
  background: red;
  transition: all ease 1s;
 }

四、合并js文件

安装插件:npm install gulp-concat --save-dev

demo2/src/js新建lib2.js文件:

function $( id ){
   return document.getElementById( id );
 }

在gulpfile.js中新增任务:

var gulp = require( 'gulp' );
var uglify = require( 'gulp-uglify' );
var cleanCSS = require( 'gulp-clean-css' );
var less = require('gulp-less');
var concat = require('gulp-concat');

gulp.task('min-js', function() {
  gulp.src('src/js/*.js')
    .pipe( uglify() )
    .pipe( gulp.dest('dist/js') );
});

gulp.task( 'concat-file', function(){
  gulp.src( 'src/js/*.js' )
    .pipe( concat('all.min.js') )
    .pipe( uglify() )
    .pipe( gulp.dest( 'dist/js' ) );
} );

gulp.task('min-css', function() {
  gulp.src('src/css/*.css')
    .pipe( cleanCSS() )
    .pipe( gulp.dest('dist/css') );
});

gulp.task( 'compile-less', function(){
  gulp.src( 'src/css/*.less' )
    .pipe( less() )
    .pipe( gulp.dest( 'dist/less' ) );
} );

执行任务:gulp concat-file

在dist/js下面生成all.min.js文件

function $(n){return document.getElementById(n)}var Oper={add:function(n,t){return n+t},sbb:function(n,t){return n-t}};

五、自动监测文件变化,执行任务

gulp.task( 'auto', function(){
   gulp.watch( 'src/js/*.js', ['min-js'] );
   gulp.watch( 'src/css/*.css', ['min-css'] );
 } );
 gulp.task( 'default', ['auto'] );

这里添加了一个默认任务default: 执行auto任务,auto里面自动监测压缩js和压缩css任务

在命令行直接执行gulp.

要执行其他任务,只需要按照这几步就可以了:

1,安装相应的插件

2,添加相应的任务

3,执行任务

以上这篇gulp教程_从入门到项目中快速上手使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
YUI模块开发原理详解
Nov 18 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
May 13 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
jQuery实现简单的tab标签页效果
Sep 12 Javascript
详解vue-cli与webpack结合如何处理静态资源
Sep 19 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
Nov 07 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 Javascript
create-react-app中添加less支持的实现
Nov 15 Javascript
利用jsonp与代理服务器方案解决跨域问题
Sep 14 #Javascript
基于js中document.cookie全面解析
Sep 14 #Javascript
基于Vue过渡状态实例讲解
Sep 14 #Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 #Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 #Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
Sep 14 #Javascript
对于js垃圾回收机制的理解
Sep 14 #Javascript
You might like
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
web 页面分页打印的实现
2009/06/22 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
PHP PDO操作总结
2014/11/17 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python 读取数据库并绘图的实例
2019/12/03 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
python对文件的操作方法汇总
2020/02/28 Python
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
计算机专业学生的自我评价
2013/12/15 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
测量工程专业求职信
2014/02/24 职场文书
环保口号大全
2014/06/12 职场文书
公司职员入党自传书
2015/06/26 职场文书
九九重阳节致辞
2015/07/31 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python