[js高手之路]gulp教程-从入门到项目中快速上手使用
在这之前,我已经分享过一个webpack的全系列,相对于webpack, gulp使用和配置起来非常的简单.
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:;
padding:;
}
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:;padding:}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,执行任务
[js高手之路]gulp教程-从入门到项目中快速上手使用的更多相关文章
- [js高手之路] es6系列教程 - 对象功能扩展详解
第一:字面量对象的方法,支持缩写形式 //es6之前,这么写 var User = { name : 'ghostwu', showName : function(){ return this.nam ...
- [js高手之路]深入浅出webpack教程系列6-插件使用之html-webpack-plugin配置(下)
上文我们对html-webpack-plugin的实例htmlWebpackPlugin进行了遍历分析,讲解了几个常用属性( inject, minify )以及自定义属性的添加,本文,我们继续深入他 ...
- [js高手之路]深入浅出webpack教程系列5-插件使用之html-webpack-plugin配置(中)
上文我们讲到了options的配置和获取数据的方式,本文,我们继续深入options的配置 一.html-webpack-plugin插件中的options除了自己定义了一些基本配置外,我们是可以任意 ...
- [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上)
还记得我们上文中的index.html文件吗? 那里面的script标签还是写死的index.bundle.js文件,那么怎么把他们变成动态的index.html文件,这个动态生成的index.htm ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
- [js高手之路]深入浅出webpack教程系列7-( babel-loader,css-loader,style-loader)的用法
什么是loader呢,官方解释为文件的预处理器,通俗点说webpack在处理静态资源的时候,需要加载各种loader,比如,html文件,要用html-loader, css文件要用css-loade ...
- [js高手之路]深入浅出webpack教程系列9-打包图片(file-loader)用法
我们还是接着上文继续,本文我们要讲的是图片资源的打包,图片在静态排版中,经常出现的两个位置是css通过background引入背景,还有一种就是在html模板文件中用img标签引入的方式,如果要在we ...
- [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法
我们接着上文,那么在上篇文章的最后,写到了css-loader的用法,如果你用心发现,就能看到我在style.css样式文件中写了一个这样的样式: div { transition: all ease ...
- [js高手之路] html5 canvas系列教程 - 掌握画直线图形的常用API
我们接着上文[js高手之路] html5 canvase系列教程 - 认识canvas以及基本使用方法继续. 一.直线的绘制 cxt.moveTo( x1, y1 ): 将画笔移动到x1, y1这个点 ...
随机推荐
- ++i,i++和i += 1的区别
++i,i++和i += 1的区别 单条语句:i++;.++i;和 i += 1;等价. int i = 0; ++i; // 或者i++;或者i += 1; cout << i < ...
- 如何快速查看github代码库中第一次commit的记录
发现一个别人推荐的代码库用来学习源码, star星还不少,别人推荐从第一次commit开始阅读,于是试着去找commits的第一次 问题来了,这个代码库commits7855次,点击进入commits ...
- 14. leetcode 383. Ransom Note
Given an arbitrary ransom note string and another string containing letters from all the magazines, ...
- Nagios部署与配置
Nagos是一款开源电脑系统和网络监视工具,能够有效监控windows,linux,Uninx的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员 ...
- python--DenyHttp项目(2)--ACM监考客户端1.0版
修复了: 360搜索可以使用的漏洞 更新版本,上一版本复制的Hosts文件保留的漏洞 #coding:gbk import os import sys from subprocess import * ...
- 阿里消息队列中间件 RocketMQ 源码分析 —— Message 拉取与消费(上)
- 白话ASP.NET MVC之二:Controller激活系统的概览
前文简介:我们抽象类路由规则的对象,RouteBase是路由对象的抽象基类,ASP.NET 的路由系统中有唯一一个从RouteBase继承的路由对象,那就是Route类型了.我们注册了路由对象Rout ...
- LGTB与序列 状压dp
考试一看我就想到了状压dp.当时没有想到素数,以为每一位只有0~9这些数,就开始压了.后来发现是小于30,然后改到了15,发现数据一点不给面子,一个小点得数都没有,完美爆零.. 考虑到bi最多变成58 ...
- [机器学习] Apriori算法
适用场合 Apriori算法包含两部分内容:1,发现频繁项集 2,挖掘关联规则. 通俗地解释一下,就是这个意思:1.发现哪些项目常常同时出现 2.挖掘这些常常出现的项目是否存在“如果A那么B”的关系. ...
- Java入门——(3)面对对象(下)
关键词: 类的继承.final关键字.多态.接口.异常.包.访问控制 一.类的继承 1.类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类 ...