Gulp实例(包括环境搭建的自动检测)
Gulp实例(包括环境搭建的自动检测)
Gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。下面我将完成如下的功能点并且附上源码:
- CSS文件打包
- less文件打包
- sass文件打包
- JavaScript文件打包
- 图片文件打包
具体的实例请点击一下链接前往 github 进行下载:
Gulp GitHub demo实例下载
1. 创建 package.json 文件(使用 cnpm init 命令行)
生成的package.json代码如下所示:
注意:我将entry point 改为gulpfile.js
{
"name": "gulp-test",
"version": "1.0.0",
"description": "",
"main": "gulpfile.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
2. 创建 .babelrc 文件(由于gulp在编译ES6语法会报错,所以需要将Es6de语法编译为ES5)
创建的 .babelrc 代码如下所示
{
"presets": [
"es2015"
]
}
3. 创建gulpfile.js文件
创建的gulpfile.js文件代码如下:
- 其中dist文件夹下面包括的内容为使用gulp自动化构建工具打包后的文件存放目录,src文件夹为源代码文件存放地点。
//引入组件
//cnpm install gulp-minify-css gulp-concat gulp-uglify gulp-imagemin gulp-clean gulp-rename gulp-htmlmin --save-dev
//用于支持ES6的语法
//cnpm install babel-core babel-preset-es2015 --save-dev
var gulp = require('gulp'),
imagemin = require('gulp-imagemin'), //图片压缩
sass = require('gulp-sass'), //sass
minifycss = require('gulp-minify-css'), //css压缩
less=require('gulp-less'),
// jshint = require('gulp-jshint'), //js检查
babel = require('gulp-babel'),
uglify = require('gulp-uglify'), //js压缩
rename = require('gulp-rename'), //重命名
concat = require('gulp-concat'), //合并文件
clean = require('gulp-clean'); //清空文件夹
htmlmin = require('gulp-htmlmin'); //html 处理
//css 压缩
gulp.task('minifycss', function() {
var cssSrc = './src/css/*.css',
cssDst = './dist/css';
return gulp.src(cssSrc) //被压缩的文件
.pipe(rename({
suffix: '.min'
}))
.pipe(minifycss()) //执行压缩
.pipe(gulp.dest(cssDst)); //输出文件夹
});
//less压缩
gulp.task('testLess',function(){
var cssSrc = './src/less/*.less',
cssDst = './dist/css';
return gulp.src(cssSrc) //被压缩的文件
.pipe(rename({
suffix: '.min'
}))
.pipe(less()) //执行压缩
.pipe(gulp.dest(cssDst)); //输出文件夹
});
gulp.task('testSass',function(){
var cssSrc = './src/sass/*.sass',
cssDst = './dist/css';
return gulp.src(cssSrc) //被压缩的文件
.pipe(rename({
suffix: '.min'
}))
.pipe(sass()) //执行压缩
.pipe(gulp.dest(cssDst)); //输出文件夹
});
// 图片处理
gulp.task('imagemin', function() {
var imgSrc = './src/images/*',
imgDst = './dist/images';
return gulp.src(imgSrc)
.pipe(imagemin())
.pipe(gulp.dest(imgDst));
});
// js处理
gulp.task('uglify', function() {
var jsSrc = './src/js/*.js',
jsDst = './dist/js';
return gulp.src(jsSrc)
.pipe(rename({
suffix: '.min'
}))
.pipe(babel({
presets: ['es2015']
}))
.pipe(uglify())
.pipe(gulp.dest(jsDst));
});
//html 处理
gulp.task('htmlmin', function() {
var options = {
removeComments: true, //清除HTML注释
collapseWhitespace: true, //压缩HTML
collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input />
removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true, //删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: true, //删除<style>和<link>的type="text/css"
minifyJS: true, //压缩页面JS
minifyCSS: true //压缩页面CSS
};
var htmlSrc = './src/*.html',
htmlDst = './dist';
gulp.src(htmlSrc)
.pipe(htmlmin(options))
.pipe(gulp.dest(htmlDst)); //同名的html,会直接替换
});
// clean被执行时,先清空对应目录下图片、样式、js
gulp.task('clean', function() {
return gulp.src(['./dist/css', './dist/js', './dist/images'], {
read: false
})
.pipe(clean());
});
//watch
// gulp.watch('./src/css/*.css', ['minifycss']);
gulp.task('watch', function() {
//css
gulp.watch('./src/css/*.css', ['minifycss']);
//less
gulp.watch('./src/less/*.less', ['testLess']);
//sass
gulp.watch('./src/sass/*.sass', ['testSass']);
//css
gulp.watch('./src/js/*.js', ['uglify']);
//css
gulp.watch('./src/images/*', ['imagemin']);
//css
gulp.watch('./src/*.html', ['htmlmin']);
});
// 默认预设任务 清空图片、样式、js并重建 运行语句 gulp
gulp.task('default', ['clean'], function() {
gulp.start('minifycss','testLess','testSass', 'uglify', 'imagemin', 'htmlmin', 'watch');
});
4. 安装依赖包
// 安装依赖包
cnpm install gulp-minify-css gulp-concat gulp-uglify gulp-imagemin gulp-clean gulp-rename gulp-htmlmin --save-dev
//安装用于支持ES6的语法
cnpm install babel-core babel-preset-es2015 --save-dev
项目地址
使用方法如下:
- 执行命令行 cnpm install
- 执行打包命令 gulp
Gulp实例(包括环境搭建的自动检测)的更多相关文章
- Golang/Go语言/Go IDE/Go windows环境搭建/Go自动提示编译器/GoSublime
Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go ...
- Android最简单的实例 :环境搭建及HelloWorld
Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 883961 阅读, 140 评论, 收藏, 编辑 ——工欲善其事必先利其器 引言 本系列适合 ...
- gulp前端自动化环境搭建详解
1.安装 nodejs Grunt和所有grunt插件都是基于nodejs来运行的, https://nodejs.org/ 安装完成之后在终端 node -v 查看安装版本 npm -v 查看np ...
- NodeJS实例系列~环境搭建,Hello world归来!
回到目录 1 安装Node.js服务端程序 https://github.com/Microsoft/nodejstools/wiki/Install-Node.js-and-get-started- ...
- Mac OS X下环境搭建 Sublime Text 2 环境变量配置 开发工具配置Golang (Go语言)
Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 一.安装Golang的SDK 在官网http://golang.org/ 直接下载安装 ...
- Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】
一.安装Golang的SDK 在官网 http://golang.org/ 直接下载安装包安装即可.下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装. 安装完成后,打开终端,输入 ...
- 【Hadoop】伪分布式环境搭建、验证
Hadoop伪分布式环境搭建: 自动部署脚本: #!/bin/bash set -eux export APP_PATH=/opt/applications export APP_NAME=Ares ...
- SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》
这篇文章比较易懂,易理解: 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层W ...
- SSH框架总结(框架分析+环境搭建+实例源码下载)
来源于: http://blog.csdn.net/shan9liang/article/details/8803989 首先,SSH不是一个框架,而是多个框架(struts+spring+hiber ...
随机推荐
- js获取当前日期事件(yyyy-MM-dd HH:mm:ss)
function getDataTimeNow() { var nowstr = new Date(); var datenow = nowstr.getFullYear() + "-&qu ...
- C Plus Plus 基础
C Plus Plus 基础 一.变量和基本类型 1.const 限定符号 const --> constant(中文意思:不停的,不断的,一直不变的) ①代替Magic Number(即『无意 ...
- client-side internet transfers
curl https://curl.haxx.se/ curl - Open Collective https://opencollective.com/curl#backers curl/curl: ...
- Java 常用工具类之 String 类
String 类的特点: 字符串对象一旦被初始化就不会被改变. //以下代码的区别: String s = "abc"; // 在常量池中创建一个字符串对象, 池中没有就建立, 池 ...
- Android项目使用Ant多渠道打包(最新sdk)
参考文章: http://blog.csdn.net/liuhe688/article/details/6679879 http://www.eoeandroid.com/thread-323111- ...
- Java读写.properties文件实例,解决中文乱码问题
package com.lxk.propertyFileTest; import java.io.*; import java.util.Properties; /** * 读写properties文 ...
- vue之 node.js 的简单介绍
一.什么是 node.js? 它是可以运行在JavaScript的服务平台 二.安装 1.node.js的特性 - 非阻塞IO模型 - 时间驱动 2.运用场景 - 高并发低业务 - 实时场景 - 聊天 ...
- beego——XSRF过滤
跨站请求伪造,简称XSRF,是Web应用中常见的一个安全问题. 当前防范 XSRF 的一种通用的方法,是对每一个用户都记录一个无法预知的token数据, 然后要求所有提交的请求(POST/PUT/DE ...
- Java集合(4):Iterator(迭代器)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的Iterator功能比较简单, ...
- python之路 堡垒机paramiko
paramiko 1.安装 pip3 install paramiko 二.使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建S ...