Webサイトのパフォーマンスを向上させるために、画像の圧縮は重要なステップです。手動で画像を1つずつ圧縮するのは手間がかかりますが、gulpとimageminを使えばこのプロセスを自動化できます。本記事では、gulpを導入し、imageminを使って画像を効率的に圧縮する方法を解説します。
必要なツールのインストール
まず最初に、gulpとimageminをインストールします。これらのツールを使って画像圧縮タスクを効率よく実行します。
imageminを使用するプロジェクトのルートディレクトリに移動し、以下のコマンドを実行します。
npm install gulp gulp-imagemin imagemin-jpegoptim imagemin-optipng imagemin-gifsicle imagemin-svgo --save-dev
ここでは、様々な画像形式(jpg、png、gif、svg)に対応するimageminプラグインをすべてインストールします。
gulpfile.jsの設定
次に、プロジェクトのルートディレクトリにgulpfile.jsという名前のファイルを作成し、以下のコードを追加します。
// gulpfile.js
// gulpを読み込む
const gulp = require('gulp');
// 各種imageminプラグインを読み込む
const imagemin = require('gulp-imagemin');
const imageminJpegoptim = require('imagemin-jpegoptim');
const imageminOptipng = require('imagemin-optipng');
const imageminGifsicle = require('imagemin-gifsicle');
const imageminSvgo = require('imagemin-svgo');
// 画像を圧縮するタスク(JPEG)
gulp.task('imagemin-jpg', () =>
gulp.src('src/images/*.jpg')
.pipe(imageminJpegoptim({ progressive: true, max: 80 })())
.pipe(gulp.dest('dist/images'))
);
// 画像を圧縮するタスク(PNG)
gulp.task('imagemin-png', () =>
gulp.src('src/images/*.png')
.pipe(imageminOptipng({ optimizationLevel: 5 })())
.pipe(gulp.dest('dist/images'))
);
// 画像を圧縮するタスク(GIF)
gulp.task('imagemin-gif', () =>
gulp.src('src/images/*.gif')
.pipe(imageminGifsicle({ optimizationLevel: 3 })())
.pipe(gulp.dest('dist/images'))
);
// 画像を圧縮するタスク(SVG)
gulp.task('imagemin-svg', () =>
gulp.src('src/images/*.svg')
.pipe(imageminSvgo()())
.pipe(gulp.dest('dist/images'))
);
// デフォルトのタスクを定義
gulp.task('default', gulp.parallel('imagemin-jpg', 'imagemin-png', 'imagemin-gif', 'imagemin-svg'));
実行してみよう
準備ができたら、コマンドラインで以下のコマンドを実行してみましょう。
gulp
これにより、gulpfile.jsで定義したimageminタスクが実行され、指定したディレクトリ内の画像が自動で圧縮されます。
まとめ
以上で、gulpとimageminを使用して画像圧縮を自動化する方法を紹介しました。この方法を使えば、Webサイトの画像パフォーマンスを向上させるための手間を大幅に削減できます。ぜひ、あなたのプロジェクトにも導入してみてください!