単純に画像を最適化するために Gulp を試しているだけです。imagemin-jpeg-recompressは、 gulp-imageminに付属するデフォルトのオプティマイザーよりも JPG を削減することが わかりました。使用する方法があるかどうか疑問に思っていますgulp-imagemin
が、jpegtran
プラグインをimagemin-jpeg-recompress
.
これがどのように連携するかについての詳細なドキュメントが見つからないようです。
単純に画像を最適化するために Gulp を試しているだけです。imagemin-jpeg-recompressは、 gulp-imageminに付属するデフォルトのオプティマイザーよりも JPG を削減することが わかりました。使用する方法があるかどうか疑問に思っていますgulp-imagemin
が、jpegtran
プラグインをimagemin-jpeg-recompress
.
これがどのように連携するかについての詳細なドキュメントが見つからないようです。
gulp-imagemin の新しいバージョン (3.x) では、上記の解決策は機能しません。その理由は、プラグインの宣言方法と配列構文およびスコープ付き引数への構成方法を変更したためです。
API の変更は、リリース 3.0.0 で文書化されています。
gulp.task('default', () => {
return gulp.src('src/images/*')
- .pipe(imagemin({
- interlaced: true,
- progressive: true,
- optimizationLevel: 5,
- svgoPlugins: [{removeViewBox: false}]
- }))
+ .pipe(imagemin([
+ imagemin.gifsicle({interlaced: true}),
+ imagemin.mozjpeg({progressive: true}),
+ imagemin.optipng({optimizationLevel: 5}),
+ imagemin.svgo({plugins: [{removeViewBox: false}]})
+ ]))
.pipe(gulp.dest('dist/images'));
});
また、「プラグインの配列を渡す場合は、オプションを変更したいプラグインだけでなく、必要なすべてのプラグインを明示的に渡す必要があります。」
imagemin-jpeg-recompress (5.x) の新しいバージョンは、この API に従います。
デフォルトのプラグイン (jpeg-recompress で上書きする jpegtran を除く) を使用してすべてをまとめると、上記の回答は次のようにフォーマットできます。
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var imageminJpegRecompress = require('imagemin-jpeg-recompress');
gulp.task('optimize', function () {
return gulp.src('src/images/*')
.pipe(imagemin([
imagemin.gifsicle(),
imageminJpegRecompress({
loops:4,
min: 50,
max: 95,
quality:'high'
}),
imagemin.optipng(),
imagemin.svgo()
]))
});
私は自分自身の質問に答えるつもりです。私は間違っているかもしれませんが、それは簡単なプロセスのようです。単純require
にプラグイン (この場合、プラグインを使用したいimagemin-jpeg-recompress
)。次に、 のプロパティをimagemin
介して使用するプラグインを指定します。これにより、付属のバンドルされたオプティマイザーが上書きされると思います。use
imagemin
jpegtran
imagemin
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var imageminJpegRecompress = require('imagemin-jpeg-recompress');
gulp.task('optimize', function () {
return gulp.src('src/images/*')
.pipe(imagemin({
use:[imageminJpegRecompress({
loops:4,
min: 50,
max: 95,
quality:'high'
})]
}))
});