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实例(包括环境搭建的自动检测)的更多相关文章

  1. Golang/Go语言/Go IDE/Go windows环境搭建/Go自动提示编译器/GoSublime

    Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go ...

  2. Android最简单的实例 :环境搭建及HelloWorld

    Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 883961 阅读, 140 评论, 收藏,  编辑 ——工欲善其事必先利其器 引言 本系列适合 ...

  3. gulp前端自动化环境搭建详解

    1.安装 nodejs Grunt和所有grunt插件都是基于nodejs来运行的, https://nodejs.org/ 安装完成之后在终端 node -v 查看安装版本  npm -v 查看np ...

  4. NodeJS实例系列~环境搭建,Hello world归来!

    回到目录 1 安装Node.js服务端程序 https://github.com/Microsoft/nodejstools/wiki/Install-Node.js-and-get-started- ...

  5. Mac OS X下环境搭建 Sublime Text 2 环境变量配置 开发工具配置Golang (Go语言)

    Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 一.安装Golang的SDK 在官网http://golang.org/ 直接下载安装 ...

  6. Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】

    一.安装Golang的SDK 在官网 http://golang.org/ 直接下载安装包安装即可.下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装. 安装完成后,打开终端,输入 ...

  7. 【Hadoop】伪分布式环境搭建、验证

    Hadoop伪分布式环境搭建: 自动部署脚本: #!/bin/bash set -eux export APP_PATH=/opt/applications export APP_NAME=Ares ...

  8. SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》

    这篇文章比较易懂,易理解: 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层W ...

  9. SSH框架总结(框架分析+环境搭建+实例源码下载)

    来源于: http://blog.csdn.net/shan9liang/article/details/8803989 首先,SSH不是一个框架,而是多个框架(struts+spring+hiber ...

随机推荐

  1. 手动爬虫之糗事百科(ptyhon3)

    一.调用封装的Url_ProxyHelper类,源码如下 import urllib.request as ur class Url_ProxyHelper: def __init__(self, u ...

  2. 翻页bug 在接口文档中应规范参数的取值区间

    <?php$a=array("red","green","blue","yellow","brown&q ...

  3. UIButton+Block

    UIButton的一个Category,使用block处理UIControlEvent事件,如常用的TouchUpInside等.代码非原创,也是从网上看到的,用到了实际项目中,目前还没发现什么问题. ...

  4. 01 javaSe 01 抽象类和接口

      抽象类 接口   目录(?)[-] 1 抽象类与接口是面向对象思想层面概念不是程序设计语言层面概念 2 抽象类是本体的抽象接口是行为的抽象 3 C中抽象类与接口的探讨     目录(?)[+]   ...

  5. SVM学习笔记(二)----手写数字识别

    引言 上一篇博客整理了一下SVM分类算法的基本理论问题,它分类的基本思想是利用最大间隔进行分类,处理非线性问题是通过核函数将特征向量映射到高维空间,从而变成线性可分的,但是运算却是在低维空间运行的.考 ...

  6. C# 创建单例你会几种方式?

    关于为什么需要创建单例?这里不过多介绍,具体百度知. 关于C#  创建单例步骤或条件吧 1.声明静态变量:2.私有构造函数(无法实例化)3.静态创建实例的方法:至于我这里的Singleton是seal ...

  7. 分页和Cookie、Session

    分页和Cookie.Session 分页 自定义分页 函数班 from django.shortcuts import render # Create your views here. data = ...

  8. vue中的锚点和查询字符串

    1.什么是锚点 锚点(achor):其实就是超链接的一种. 如:普通的超链接 <a href="sub_task_detail.php">详细</a>  主 ...

  9. Python:笔记(5)——错误、调试和测试

    Python:笔记(5)——错误.调试和测试 错误处理 1.TRY语句 这个和Java中的语法是及其相似的,catach换成except. 说明:同样,不管有没有错误,fianlly都会执行的! 补充 ...

  10. 12 Spring框架 SpringDAO的事务管理

    上一节我们说过Spring对DAO的两个支持分为两个知识点,一个是jdbc模板,另一个是事务管理. 事务是数据库中的概念,但是在一般情况下我们需要将事务提到业务层次,这样能够使得业务具有事务的特性,来 ...