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 相关文章推荐
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
JavaScript解析JSON数据示例
Jul 16 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
在vue中created、mounted等方法使用小结
Jul 21 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 中的输出缓冲
2006/12/21 PHP
PHP 第一节 php简介
2012/04/28 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP文件操作方法汇总
2015/07/01 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现删除文件与目录的方法
2014/11/10 Python
python format 格式化输出方法
2018/07/16 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Djang的model创建的字段和参数详解
2019/07/27 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
中式结婚主持词
2014/03/14 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
精神文明建设汇报材料
2014/12/24 职场文书