前端自动化gulp使用方法
gulp介绍
1. 网站: http://slides.com/contra/gulp#/
2. 特点
易于使用:通过代码优于配置的策略, Gulp 让简单的任务简单,复杂的任务可管理。
构建快速 :利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作。
插件高质 : Gulp 严格的插件指南确保插件如你期望的那样简洁高质得工作。
易于学习 :通过最少的 API ,掌握 Gulp 毫不费力,构建工作尽在掌握:如同一系列流管道。
1.gulp安装
前提先安装 nodejs 环境然后在进行如下安装
npm install gulp -g 全局安装 npm install gulp --save-dev 安装依赖
如果安装不成功,借助cnpm
2. 初始化工程
1>、mkdir 文件夹名称
2>cd 文件夹名称
3> 创建 package.json 文件
手动创建或者命令创建
npm init 输入相关信息
4> 然后发现没有 gulp
这个时候就需要输入
npm install gulp --save-dev
然后出现一个 node_modules/ 文件夹
(2) 有配置文件的话
直接输入 npm install 就可以了
3. 创建任务
通过 gulpfile.js 去创建任务
在根目录下创建一个 gulpfile.js 的文件
在文件中写入以下内容
var gulp = require('gulp');
gulp.task('hello',function(){
// 第一个参数是任务名称,第二个参数是任务功能
console.log('hello world!');
})
写完之后呢
在命令行中输入
gulp hello 命令执行输出 hello world !
其他命令我们会在后面介绍
这里呢我们先介绍一个默认的任务
gulp.task('default',function(){}) 他也有回调函数,但是呢,但是回调函数,我们可以通过数组来定义
gulp.task('default',['hello',....]); 数组里放入我们定义的字符串
然后命令行中输入gulp 就可以执行了//例如上面输 gulp default
4.gulp 基础
gulp.src().pipe(gulp.dest())
gulp.src() 方法可以帮助我们找出将要处理的文件,然后 pipe() 去处理这些找到的文件。 pipe() 可以理解为管道,每个管道就可以指定它的功能,最后我们再使用 gulp.dest() 方法把处理好的文件放到指定的地方。
1>使用 gulp 来实现文件的 copy
首先在我们工程目录下新建一个测试使用的 index.html,然后写入相应的内容
在我们个 gulpfile.js 文件中输入以下内容
var gulp =require('gulp');
gulp.task('copy-index',function(){
//gulp.src() 找到我们的 index.html 然后使用 .pipe() 通道
//gulp.dist() 发布拷贝
return gulp.src('index.html').pipe(gulp.dist('dist'));
});
在我们的命令行中执行gulp copy-index 命令,然后去 dist 目录下验证
复制文件夹下所有jpg图片
var gulp = require('gulp');
gulp.task('images',function(){
return gulp.src('images/*.jpg').pipe(gulp.dest('dist/images'))
});
*.jpg 所有格式为jpg的图片
下面再讲一下如何拷贝 images 下面文件夹以及文件夹下文件加入我们想要同时拷贝 jpg , png 文件
gulp.task('images',function(){
return gulp.src('images/*.{jpg,png}').pipe(gulp.dest('dist/images'))
})
里面不要加空格,/**/* 当前文件夹下所有文件以及子文件下所有文件
两个文件夹同时拷贝到某一个文件夹下
gulp.task('data',function(){
return gulp.src(['xml/*.xml','json/*.json']).pipe(gulp.dest('dist/data'));
})
排除文件拷贝
gulp.task('data',function(){
return gulp.src(['xml/*.xml','json/*.json' , '!/json/secret.json']).pipe(gulp.dest('dist/data'));
})
!/json/secret.json 排除某个文件
多个任务执行,将上述几个一起执行
gulp.task('build',['copy-index','images','data'],function(){
console.log(' 编译成功 ');
})
命令行 gulp build 查看效果
2>侦测文件变化
gulp.task('watch',function(){
gulp.watch('index.html',['copy-index']);
gulp.watch('images/**/*.{jpg,png}',['images']);
gulp.watch(['xml/*.xml','json/*.json','!json/secret.json'],['data']);
})
回到命令行执行 gulp watch
结束 ctrl + C
回到文件里面改变文件看下效果
5、gulp 插件使用
访问网站 http://gulpjs.com/plugins
1>、gulp 编译 less
命令行安装依赖
npm install gulp-less --save-dev
创建 less 文件,写入内容
在 gulpfile.js 文件中写入
var less = require('gulp-less');
gulp.task('less',function(){
return gulp.src('stylesheet/**/*.less')
.pipe(less());
.pipe(gulp.dest('dist/css'));
})
2>、gulp-connect 插件搭建本地服务
命令行安装
npm install gulp-connect --save-dev
在 gulpfile.js 文件中写入
var connect= require('gulp-connect');
gulp.task('sever',function(){
connect.server();
})
启动服务:
命令行执行 gulp sever
修改文件后页面自动刷新
gulp.task('sever',function(){
//connect.server();
//sever() 方法介绍
// 配置文档根目录
connect.server({
root : 'dist' ,
livereload:true
});
})
然后在我们 copy 任务中添加
gulp.task('copy',function(){
return gulp.src('index.html').pipe(gulp.dest(''))
.pipe(connect.reload());
})
然后在 watch 中添加
gulp.task('watch',function(){
gulp.watch('index.html',['copy']);
})
然后创建一个
gulp.task('default',['server','watch']);
最后执行 gulp default 命令
验证修改文件看下浏览器中是否会自动刷新
3>、合并文件插件 gulp-concat
命令行安装 npm install gulp-concat --save-dev
在 gulpfile.js
var concat = require('gulp-concat');
gulp.task('scripts',function(){
return gulp.src(['javascripts/avalon.js','javascripts/index.js'])
.pipe(concat('vendor.js'))
.pipe(gulp.dest('dist/js'));
})
4>、将合并 js 文件进行压缩 gulp-uglify
命令行安装 npm install gulp-uglify --save-dev
var uglify = require('gulp-uglify');
gulp.task('scripts',function(){
return gulp.src(['javascripts/avalon.js','javascripts/index.js'])
.pipe(concat('vendor.js'))
.pipe(uglify())//
.pipe(gulp.dest('dist/js'));
})
为了保留前后压缩两个文件
怎么做呢
安装 gulp-rename 插件
命令行安装 npm install gulp-rename --save-dev
var rename = require('gulp-rename');
gulp.task('scripts',function(){
return gulp.src(['javascripts/avalon.js','javascripts/index.js'])
.pipe(concat('vendor.js'))
.pipe(gulp.dest('dist/js'))
.pipe(uglify())
.pipe(rename('vendor.min.js'))
.pipe(gulp.dest('dist/js'));
})
命令行执行 gulp scripts
验证是否生成两个文件
5>、如何压缩 css
命令行安装 npm install gulp-minify-css --save-dev
var minifyCss = require('gulp-minify-css');
gulp.task('less',function(){
return gulp.src('stylesheet/**/*.less')
.pipe(less());
.pipe(minifyCss())
.pipe(uglify())
.pipe(gulp.dest('dist/css'));
})
6>、对图片进行压缩
安装插件 npm install gulp-imagemin --save-dev
var imagemin = require('gulp-imagemin');
gulp.task('images',function(){
return gulp.src('images/**/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/images'))
})
执行命令 gulp images
6>、监听文件,浏览器自动刷新
安装插件 npm install gulp-livereload --save-dev
var less = require("gulp-less"); //less编译
var livereload = require('gulp-livereload'); //自动刷新 gulp.task('compile-less', function() {
gulp.src('style/less/*.less') //less编译
.pipe(less())
.pipe(gulp.dest('style/css'))
.pipe(livereload()); });
gulp.task('watch', function() {
livereload.listen(); //要在这里调用listen()方法
gulp.watch('style/less/*.less', ['compile-less']); //监听目录下的文件,若文件发生变化,则调用less任务。
gulp.src('index.html')
.pipe(livereload());
});
//当代码变化时,它可以帮助我们自动刷新页面,该插件最好配合谷歌浏览器,且要安装livereload chrome extension扩展插件,否则无效。
gulp 功能呢暂时讲到这里还有很多内容可以参考官网进行学习
更详细gulp入门地址 http://www.ydcss.com/archives/18
前端自动化gulp使用方法的更多相关文章
- 前端自动化gulp遇上es6从 无知到深爱
Gulp是什么? Gulp是前端自动化的工具,但Gulp能用来做什么 1.搭建web服务器 2.使用预处理器Sass,Less 3.压缩优化,可以压缩JS CSS Html 图片 4.自动将更新变化的 ...
- 前端自动化-----gulp详细入门(转)
简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码 ...
- 前端自动化Gulp工具常用插件
npm init命令初始化当前文件夹后,在当前文件夹新建gulpfile.js文件.当前目录下的所有操作流都在gulpfile.js文件中定义. gulp自动化 gulp-uglify (JS压缩) ...
- 前端自动化-gulp入门
前不久本人写了一篇关于gulp安装和配置的文章,其实当时还是懵逼的状态,但是今天再次温习了一遍,感觉对整个流程有个整体的理解了,下面以一个实例给大家分享下我的经验供参考和学习. 1.首先安装nodej ...
- 前端自动化工具 -- gulp https://angularjs.org/
gulp是基于流的前端自动化构建工具. gulp是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用. 同样的,也是包括基本用法和各插件的使用. 二.基本用法--插件使用 gu ...
- 前端自动化工具gulp自动添加版本号
之前,我介绍了学习安装并配置前端自动化工具Gulp,觉得gulp确实比grunt的配置简单很多,于是我决定再深入学习一下gulp,就去网上查了资料,发现gulp还可以自动添加版本号,这个功能就为我平时 ...
- 学习安装并配置前端自动化工具Gulp
Gulp和所有Gulp插件都是基于nodeJs来运行的,因此在你的电脑上需要安装nodeJs,安装过程请移驾安装并配置前端自动化工具--grunt.安装完成后,通过运行cmd进入DOS命令窗口,如图: ...
- Node.js前端自动化工具:gulp
前端自动化工具 -- gulp 使用简介 gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是 ...
- 前端自动化工具 -- Gulp 使用简介
gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用 ...
随机推荐
- Linux内核调试方法总结之strace
strace [用途] strace是一个功能强大的调试.分析.诊断工具,跟踪程序或进程执行时的系统调用和所接收的信号.可将所调用的系统调用的名称.参数和返回值输出到标准输出或者输出到-o指定的文件. ...
- Phaser 源码分析
Phaser 一个可重用的同步屏障,功能上与 CyclicBarrier 和 CountDownLatch 类似,但是支持更灵活的使用. 把多个线程协作执行的任务划分为多个阶段,编程时需要明确各个阶段 ...
- CSS - 初始值、指定值、计算值、应用值、实际值
初始值:未提供指定值且未从父元素指定值继承的 CSS 属性的值. 指定值:通过直接声明或 CSS 属性的值. 计算值:通过需要计算得到的值,如,继承和相对的尺寸.(注意:有些计算要等到布局确定才能进行 ...
- linux文本图形界面转换
vim /etc/inittab 3为默认进入文本界面, 5为默认进入图形界面 文本界面下输入init5或者startx切换图形化界面 图形化界面下输入init3切换文本界面
- 07 oracle 非归档模式 inactive/active/current redo log损坏的恢复
在非归档模式下缺失Redo Log后的恢复 将之前的归档模式修改为非归档 SQL> shutdown immediate; SQL> startup mount SQL> alter ...
- git --> 工作使用流程
[git]------git开发过程中的使用流程------[WangQi] 001.创建仓库 002.新建项目 003.初始化仓库 这一步不需要做 git init : 文件夹中会多出一个隐藏 ...
- 虚拟机 vs 容器
虚拟机 虚拟机本质上是模拟,模拟物理机上的硬件 虚拟机必须安装操作系统 一个虚拟机操作系统的崩溃不会影响到其他虚拟机 容器 容器的本质是经过隔离与限制的linux进程 容器使用的是物理机的资源 容器之 ...
- Kubernetes kubeadm 安装记录
Kubernetes kubeadm 安装记录 注:比较乱,都是一些预见到的错误 kubernetes yum 源 cat /etc/yum.repos.d/kubernetes.repo [kube ...
- 2019春第十一周作业Compile Summarize
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 这里 我在这个课程的目标是 能按自己的想法解出题目 这个作业在那个具体方面帮助我实现目标 能朝着软件工程师方向发展 参考文献与网址 C语言 ...
- Flutter修改状态栏颜色以及字体颜色
Flutter沉浸式状态栏 void main() { runApp(MyApp()); if (Platform.isAndroid) { // 以下两行 设置android状态栏为透明的沉浸.写在 ...