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使用入门三步压缩图片的更多相关文章

  1. 续Gulp使用入门三步压缩CSS

    gulp 压缩css 一.安装 gulp-minify-css 模块 提示:你需要使用命令行的 cd 切换到对应目录后进行安装操作. 在命令行输入 npm install gulp-minify-cs ...

  2. 续Gulp使用入门-综合运用>使用Gulp构建一个项目

    这是我的文件目录结构图  下面是我gulpfile.js的配置 'use strict' var gulp=require('gulp'); var gutil=require('gulp-util' ...

  3. MongoDB入门三步曲2--基本操作(续)--聚合、索引、游标及mapReduce

    mongodb 基本操作(续)--聚合.索引.游标及mapReduce 目录 聚合操作 MapReduce 游标 索引 聚合操作 像大多关系数据库一样,Mongodb也提供了聚合操作,这里仅列取常见到 ...

  4. 续Gulp使用入门编译Sass

    使用 gulp 编译 Sass Sass 是一种 CSS 的开发工具,提供了许多便利的写法,大大节省了开发者的时间,使得 CSS 的开发,变得简单和可维护. 安装 npm install gulp-s ...

  5. MongoDB入门三步曲1--安装、基本操作

    mongodb 基本操作 目录 mongodb安装 mongod启动 mongo shell启动 mongod 停止 mongodb基本操作:CRUD 数据插入 数据查询 数据更新 数据删除 集合删除 ...

  6. MongoDB入门三步曲3--部署技术:主备、副本集和数据分片

    mongodb部署--主备.副本及数据分片 主备复制 副本集 数据分片 主备复制 主备复制是最基本的一种多点部署方案,在读写分离.热备份.数据恢复等方面具有重要作用. 在真实的生产环境,主备库肯定需要 ...

  7. Joomla - 优化(时区、google字体、压缩图片、压缩自定义代码)

    Joomla - 优化(时区.google字体.压缩图片.压缩自定义代码) 一.时区 发布文章是往往会发现发布时间和当前时间对不上,原因是 Joomla 用的是国际标准时间,和中国时区大约相差8小时, ...

  8. gulp-imagemin图片压缩----gulp系列(三)

    本节实现图片压缩,在实现压缩前,先配置images任务,设置源目录和输出目录. 在系列(二)代码的基础上,再进行扩展. 1.找到gulp->config.js,对images进行源目录(src- ...

  9. Gulp使用入门操作十一步压缩JS

    前提需要安装nodejs 一. 全局安装Gulp npm install -g gulp 二.新建一个 gulpfile.js 文件 chapter2└── gulpfile.js 三.在 gulpf ...

随机推荐

  1. svn状态图标大全

     黄色感叹号(有冲突):--这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别 ...

  2. MySQL SQL模式匹配

    MySQL提供标准的SQL模式匹配,SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符).. 关于SQL模式匹配:http://dev.mysql.com/doc/r ...

  3. Discuz!X3解读之类引入机制及目录结构

    实例: - /source/class/table/table_forum_faq.php - /source/class/model/model_forum_post.php - /source/p ...

  4. js 自带的 reduce() 方法

    1.方法说明 , Array的reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,其效果 ...

  5. [TypeScript] 建置输出单一JavaScript档案(.js)与Declaration档案(.d.ts)

    [TypeScript] 建置输出单一JavaScript档案(.js)与Declaration档案(.d.ts) 问题情景 开发人员使用Visual Studio来开发TypeScript,可以很方 ...

  6. 获取经过跳转后的url地址

    粗略一算,不写code已经好几个月了. 昨日受兄弟所托,为他写了一个小小的程序. 程序功能: 自动获取跳转后的Url地址 如下图所示: (newUrl.txt为转换后的地址信息...) 实现过程: 每 ...

  7. python+Eclipse+pydev环境搭建(转)

    编辑器:Python 自带的 IDLE 简单快捷, 学习Python或者编写小型软件的时候.非常有用. 编辑器: Eclipse + pydev插件 1. Eclipse是写JAVA的IDE, 这样就 ...

  8. IOS 网络浅析 (二 网络异步请求)

    学习网络,无论是C/S还是B/S首要的当然是向服务器发送请求,并得到响应,么有请求没有响应,那就不叫做网络了. 这边文章向大家介绍境界一下网路异步请求. *大家不要觉得我写的知识点太零散,我只是想给大 ...

  9. 带删除的EditText

    在安卓开发中EditText是比较常用的控件之一,那我们平常看到EditText填写了内容之后右边会出现一个删除的按钮,这样可以方便用户对其中文本清空操作,是非常人性化的,我们可以重写EditText ...

  10. iOS屏幕适配知识

    一.旋转处理    第一步:注册通知 [[NSNotificationCenter defaultCenter] addObserver:self                            ...