续Gulp使用入门三步压缩图片
gulp 压缩图片
压缩 图片文件可降低文件大小,提高图片加载速度。
找到规律转换为 gulp 代码
规律
找到 images/ 目录下的所有文件,压缩它们,将压缩后的文件存放在 dist/images/ 目录下。
gulp 代码
一、安装 gulp-imagemin 模块
提示:你需要使用命令行的 cd 切换至对应目录再进行安装操作和 gulp 启动操作。
在命令行输入 npm install gulp-imagemin
安装成功后你会看到如下信息:(安装时间可能会比较长取决于网络)
npm install gulp-imagemin
npm WARN deprecated cross-spawn-async@2.2.4: cross-spawn no longer requires a build toolchain, use it instead!
> gifsicle@3.0.4 postinstall D:\wamp\www\BootsDataTable\node_modules\gifsicle
> node lib/install.js
√ gifsicle pre-build test passed successfully
> jpegtran-bin@3.1.0 postinstall D:\wamp\www\BootsDataTable\node_modules\jpegtran-bin
> node lib/install.js
√ jpegtran pre-build test passed successfully
> optipng-bin@3.1.2 postinstall D:\wamp\www\BootsDataTable\node_modules\optipng-bin
> node lib/install.js
√ optipng pre-build test passed successfully
test@1.0.0 D:\wamp\www\BootsDataTable
`-- gulp-imagemin@3.0.3
+-- imagemin@5.2.2
| +-- file-type@3.8.0
| +-- globby@5.0.0
| | +-- array-union@1.0.2
| | +-- arrify@1.0.1
| | +-- glob@7.0.6
| | | +-- fs.realpath@1.0.0
| | | +-- minimatch@3.0.3
| | | `-- path-is-absolute@1.0.0
| | `-- object-assign@4.1.0
| `-- promise.pipe@3.0.0
+-- imagemin-gifsicle@5.1.0
| +-- exec-buffer@3.0.0
| | +-- execa@0.3.0
| | | +-- cross-spawn-async@2.2.4
| | | | `-- lru-cache@4.0.1
| | | | +-- pseudomap@1.0.2
| | | | `-- yallist@2.0.0
| | | +-- npm-run-path@1.0.0
| | | +-- object-assign@4.1.0
| | | +-- path-key@1.0.0
| | | `-- strip-eof@1.0.0
| | `-- tempfile@1.1.1
| | `-- uuid@2.0.3
| +-- gifsicle@3.0.4
| | +-- bin-build@2.2.0
| | | +-- archive-type@3.2.0
| | | +-- decompress@3.0.0
| | | | +-- buffer-to-vinyl@1.1.0
| | | | | `-- vinyl@1.2.0
| | | | +-- concat-stream@1.5.2
| | | | | `-- typedarray@0.0.6
| | | | +-- decompress-tar@3.1.0
| | | | | +-- is-tar@1.0.0
| | | | | +-- object-assign@2.1.1
| | | | | +-- strip-dirs@1.1.1
| | | | | | +-- is-absolute@0.1.7
| | | | | | | `-- is-relative@0.1.3
| | | | | | +-- is-natural-number@2.1.1
| | | | | | `-- sum-up@1.0.3
| | | | | +-- tar-stream@1.5.2
| | | | | | +-- bl@1.1.2
| | | | | | `-- end-of-stream@1.1.0
| | | | | +-- through2@0.6.5
| | | | | | `-- readable-stream@1.0.34
| | | | | | `-- isarray@0.0.1
| | | | | `-- vinyl@0.4.6
| | | | | `-- clone@0.2.0
| | | | +-- decompress-tarbz2@3.1.0
| | | | | +-- is-bzip2@1.0.0
| | | | | +-- object-assign@2.1.1
| | | | | +-- seek-bzip@1.0.5
| | | | | +-- through2@0.6.5
| | | | | | `-- readable-stream@1.0.34
| | | | | | `-- isarray@0.0.1
| | | | | `-- vinyl@0.4.6
| | | | | `-- clone@0.2.0
| | | | +-- decompress-targz@3.1.0
| | | | | +-- is-gzip@1.0.0
| | | | | +-- object-assign@2.1.1
| | | | | +-- through2@0.6.5
| | | | | | `-- readable-stream@1.0.34
| | | | | | `-- isarray@0.0.1
| | | | | `-- vinyl@0.4.6
| | | | | `-- clone@0.2.0
| | | | +-- decompress-unzip@3.4.0
| | | | | +-- is-zip@1.0.0
| | | | | +-- stat-mode@0.2.2
| | | | | +-- vinyl@1.2.0
| | | | | `-- yauzl@2.6.0
| | | | | +-- buffer-crc32@0.2.5
| | | | | `-- fd-slicer@1.0.1
| | | | | `-- pend@1.2.0
| | | | +-- stream-combiner2@1.1.1
| | | | | `-- duplexer2@0.1.4
| | | | +-- vinyl-assign@1.2.1
| | | | | `-- object-assign@4.1.0
| | | | `-- vinyl-fs@2.4.3
| | | | +-- duplexify@3.4.5
| | | | | +-- end-of-stream@1.0.0
| | | | | `-- stream-shift@1.0.0
| | | | +-- glob-stream@5.3.5
| | | | | +-- glob@5.0.15
| | | | | +-- glob-parent@3.0.0
| | | | | | `-- is-glob@3.0.0
| | | | | | `-- is-extglob@2.0.0
| | | | | +-- ordered-read-streams@0.3.0
| | | | | +-- through2@0.6.5
| | | | | | `-- readable-stream@1.0.34
| | | | | | `-- isarray@0.0.1
| | | | | +-- to-absolute-glob@0.1.1
| | | | | | `-- extend-shallow@2.0.1
| | | | | `-- unique-stream@2.2.1
| | | | | `-- json-stable-stringify@1.0.1
| | | | | `-- jsonify@0.0.0
| | | | +-- gulp-sourcemaps@1.6.0
| | | | | +-- convert-source-map@1.3.0
| | | | | `-- vinyl@1.2.0
| | | | +-- is-valid-glob@0.3.0
| | | | +-- lazystream@1.0.0
| | | | +-- lodash.isequal@4.4.0
| | | | +-- merge-stream@1.0.0
| | | | +-- object-assign@4.1.0
| | | | +-- strip-bom-stream@1.0.0
| | | | +-- through2-filter@2.0.0
| | | | +-- vali-date@1.0.0
| | | | `-- vinyl@1.2.0
| | | +-- download@4.4.3
| | | | +-- caw@1.2.0
| | | | | +-- get-proxy@1.1.0
| | | | | | `-- rc@1.1.6
| | | | | | +-- deep-extend@0.4.1
| | | | | | `-- strip-json-comments@1.0.4
| | | | | +-- is-obj@1.0.1
| | | | | `-- tunnel-agent@0.4.3
| | | | +-- filenamify@1.2.1
| | | | | +-- filename-reserved-regex@1.0.0
| | | | | +-- strip-outer@1.0.0
| | | | | `-- trim-repeated@1.0.0
| | | | +-- got@5.6.0
| | | | | +-- create-error-class@3.0.2
| | | | | | `-- capture-stack-trace@1.0.0
| | | | | +-- duplexer2@0.1.4
| | | | | +-- is-plain-obj@1.1.0
| | | | | +-- is-redirect@1.0.0
| | | | | +-- is-retry-allowed@1.1.0
| | | | | +-- is-stream@1.1.0
| | | | | +-- lowercase-keys@1.0.0
| | | | | +-- node-status-codes@1.0.0
| | | | | +-- object-assign@4.1.0
| | | | | +-- timed-out@2.0.0
| | | | | +-- unzip-response@1.0.1
| | | | | `-- url-parse-lax@1.0.0
| | | | | `-- prepend-http@1.0.4
| | | | +-- gulp-decompress@1.2.0
| | | | +-- gulp-rename@1.2.2
| | | | +-- is-url@1.2.2
| | | | +-- object-assign@4.1.0
| | | | +-- read-all-stream@3.1.0
| | | | +-- vinyl@1.2.0
| | | | +-- vinyl-fs@2.4.3
| | | | | `-- glob-stream@5.3.5
| | | | | +-- glob@5.0.15
| | | | | +-- glob-parent@3.0.0
| | | | | | `-- is-glob@3.0.0
| | | | | | `-- is-extglob@2.0.0
| | | | | +-- ordered-read-streams@0.3.0
| | | | | +-- through2@0.6.5
| | | | | | `-- readable-stream@1.0.34
| | | | | | `-- isarray@0.0.1
| | | | | `-- unique-stream@2.2.1
| | | | `-- ware@1.3.0
| | | | `-- wrap-fn@0.1.5
| | | | `-- co@3.1.0
| | | +-- exec-series@1.0.3
| | | | +-- async-each-series@1.1.0
| | | | `-- object-assign@4.1.0
| | | +-- rimraf@2.5.4
| | | | `-- glob@7.0.6
| | | | `-- minimatch@3.0.3
| | | `-- url-regex@3.2.0
| | | `-- ip-regex@1.0.3
| | +-- bin-wrapper@3.0.2
| | | +-- bin-check@2.0.0
| | | | `-- executable@1.1.0
| | | +-- bin-version-check@2.1.0
| | | | +-- bin-version@1.0.4
| | | | | `-- find-versions@1.2.1
| | | | | `-- semver-regex@1.0.0
| | | | `-- semver-truncate@1.1.2
| | | | `-- semver@5.3.0
| | | +-- each-async@1.1.1
| | | | +-- onetime@1.1.0
| | | | `-- set-immediate-shim@1.0.1
| | | +-- lazy-req@1.1.0
| | | `-- os-filter-obj@1.0.3
| | `-- logalot@2.1.0
| | +-- figures@1.7.0
| | | `-- object-assign@4.1.0
| | `-- squeak@1.3.0
| | +-- console-stream@0.1.1
| | `-- lpad-align@1.1.0
| | `-- lpad@2.0.1
| `-- is-gif@1.0.0
+-- imagemin-jpegtran@5.0.2
| +-- is-jpg@1.0.0
| `-- jpegtran-bin@3.1.0
+-- imagemin-optipng@5.2.1
| +-- is-png@1.0.0
| `-- optipng-bin@3.1.2
+-- imagemin-svgo@5.2.0
| +-- is-svg@2.0.1
| | `-- html-comment-regex@1.1.1
| `-- svgo@0.7.0
| +-- coa@1.0.1
| | `-- q@1.4.1
| +-- colors@1.1.2
| +-- csso@2.2.1
| | `-- clap@1.1.1
| +-- js-yaml@3.6.1
| | +-- argparse@1.0.7
| | | `-- sprintf-js@1.0.3
| | `-- esprima@2.7.3
| +-- sax@1.2.1
| `-- whet.extend@0.9.9
+-- plur@2.1.2
| `-- irregular-plurals@1.2.0
+-- pretty-bytes@2.0.1
`-- through2-concurrent@1.1.1
npm WARN test@1.0.0 No description
npm WARN test@1.0.0 No repository field.
二、创建 gulpfile.js 文件编写代码
在对应目录创建 gulpfile.js 文件并写入如下内容:
// 获取 gulp
var gulp = require('gulp');
// 获取 gulp-imagemin 模块
var imagemin = require('gulp-imagemin')
// 压缩图片任务
// 在命令行输入 gulp images 启动此任务
gulp.task('images', function () {
// 1. 找到图片
gulp.src('images/*.*')
// 2. 压缩图片
.pipe(imagemin({
progressive: true
}))
// 3. 另存图片
.pipe(gulp.dest('dist/images'))
});
// 在命令行使用 gulp auto 启动此任务
gulp.task('auto', function () {
// 监听文件修改,当文件被修改则执行 images 任务
gulp.watch('images/*.*)', ['images'])
});
// 使用 gulp.task('default') 定义默认任务
// 在命令行使用 gulp 启动 images 任务和 auto 任务
gulp.task('default', ['images', 'auto'])
你可以访问 gulp-imagemin 以查看更多用法。
三、在 images/ 目录下存放图片
在 gulpfile.js 对应目录创建 images 文件夹,并在 images/ 目录下存放图片。
你可以访问 https://github.com/nimojs/gulp-book/tree/master/demo/chapter4/images/ 下载示例图片
四、运行 gulp 查看效果
在命令行输入 gulp +回车
你将看到命令行出现如下提示
gulp
[11:07:37] Using gulpfile D:\wamp\www\BootsDataTable\gulpfile.js
[11:07:37] Starting 'images'...
[11:07:37] Finished 'images' after 3.57 ms
[11:07:37] Starting 'auto'...
[11:07:37] Finished 'auto' after 57 ms
[11:07:37] Starting 'default'...
[11:07:37] Finished 'default' after 16 μs
[11:07:38] gulp-imagemin: Minified 20 images (saved 12.48 kB - 24.2%)
续Gulp使用入门三步压缩图片的更多相关文章
- 续Gulp使用入门三步压缩CSS
gulp 压缩css 一.安装 gulp-minify-css 模块 提示:你需要使用命令行的 cd 切换到对应目录后进行安装操作. 在命令行输入 npm install gulp-minify-cs ...
- 续Gulp使用入门-综合运用>使用Gulp构建一个项目
这是我的文件目录结构图 下面是我gulpfile.js的配置 'use strict' var gulp=require('gulp'); var gutil=require('gulp-util' ...
- MongoDB入门三步曲2--基本操作(续)--聚合、索引、游标及mapReduce
mongodb 基本操作(续)--聚合.索引.游标及mapReduce 目录 聚合操作 MapReduce 游标 索引 聚合操作 像大多关系数据库一样,Mongodb也提供了聚合操作,这里仅列取常见到 ...
- 续Gulp使用入门编译Sass
使用 gulp 编译 Sass Sass 是一种 CSS 的开发工具,提供了许多便利的写法,大大节省了开发者的时间,使得 CSS 的开发,变得简单和可维护. 安装 npm install gulp-s ...
- MongoDB入门三步曲1--安装、基本操作
mongodb 基本操作 目录 mongodb安装 mongod启动 mongo shell启动 mongod 停止 mongodb基本操作:CRUD 数据插入 数据查询 数据更新 数据删除 集合删除 ...
- MongoDB入门三步曲3--部署技术:主备、副本集和数据分片
mongodb部署--主备.副本及数据分片 主备复制 副本集 数据分片 主备复制 主备复制是最基本的一种多点部署方案,在读写分离.热备份.数据恢复等方面具有重要作用. 在真实的生产环境,主备库肯定需要 ...
- Joomla - 优化(时区、google字体、压缩图片、压缩自定义代码)
Joomla - 优化(时区.google字体.压缩图片.压缩自定义代码) 一.时区 发布文章是往往会发现发布时间和当前时间对不上,原因是 Joomla 用的是国际标准时间,和中国时区大约相差8小时, ...
- gulp-imagemin图片压缩----gulp系列(三)
本节实现图片压缩,在实现压缩前,先配置images任务,设置源目录和输出目录. 在系列(二)代码的基础上,再进行扩展. 1.找到gulp->config.js,对images进行源目录(src- ...
- Gulp使用入门操作十一步压缩JS
前提需要安装nodejs 一. 全局安装Gulp npm install -g gulp 二.新建一个 gulpfile.js 文件 chapter2└── gulpfile.js 三.在 gulpf ...
随机推荐
- KMP算法 --- 深入理解next数组
在KMP算法中有个数组,叫做前缀数组,也有的叫next数组. 每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多跳几个字符. 当然它描述的也是子串的对称程度,程度越高,值 ...
- [水煮 ASP.NET Web API2 方法论](3-4)设置路由可选项
问题 怎么样创建一个路由,不管客户端传不传这个参数,都可以被成功匹配. 解决方案 ASP.NET WEB API 的集中式路由和属性路由都支持路由声明可选参数. 在用集中式路由中可以通过 RouteP ...
- AEAI WM V1.0 工作管理系统开源发版
AEAI WM工作管理系统是沈阳数通畅联软件公司基于AEAI DP平台开发的开源Java Web系统,用来管理记录日常工作内容及周工作内容等事务,AEAI WM工作管理系统包括一些核心的工作管理业务功 ...
- JavaScript基础16——js的BOM对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Dynamics AX for Retail POS Development blogs
Dynamics AX for Retail POS Development Dynamics AX for Retail POS Development - Code Samples AX for ...
- 对抗静态分析——运行时修复dex
对抗静态分析——运行时修复dex 本文来源:i春秋社区-分享你的技术,为安全加点温度 零.写在前面 这个系列本来题目想写对抗反编译,可是想想对抗反编译的这个范围有点大,总结如下 灵魂作图 ...
- Microsoft FIM: Working with Domino Connector v8
Microsoft FIM: Working with Domino Connector v8 Posted on July 22, 2013 by Michael Pearn - 4 Comment ...
- 2014年听写VOA50篇
在沪江英语的VOA听写栏目上听写完成50篇,听写笔记PDF. 103.VOASP.2014奥巴马国情咨文(1-3).mp3 104.VOASP.2014奥巴马国情咨文(2-3).mp3 105.VOA ...
- C语言指针传递详解
传递指针可以让多个函数访问指针所引用的对象,而不用把对象声明为全局可访问,要在某个函数中修改数据,需要用指针传递数据,当数据是需要修改的指针的时候,就要传递指针的指针,传递参数(包括指针)的时候,传递 ...
- iOS多线程邂逅
.线程之间的通信 //有一个特别耗时的操作,比如说网络请求,开启子线程去请求网络,我们一般是要在主线程更新UI,如何从子线程跳转到主线程? #import "ViewController.h ...