3

単純に画像を最適化するために Gulp を試しているだけです。imagemin-jpeg-recompressは、 gulp-imageminに付属するデフォルトのオプティマイザーよりも JPG を削減することが わかりました。使用する方法があるかどうか疑問に思っていますgulp-imageminが、jpegtranプラグインをimagemin-jpeg-recompress.

これがどのように連携するかについての詳細なドキュメントが見つからないようです。

4

2 に答える 2

4

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()
    ]))
});

gulp-imagemin github issue tracker に関する関連ディスカッション

于 2016-07-08T02:25:16.517 に答える
4

私は自分自身の質問に答えるつもりです。私は間違っているかもしれませんが、それは簡単なプロセスのようです。単純requireにプラグイン (この場合、プラグインを使用したいimagemin-jpeg-recompress)。次に、 のプロパティをimagemin介して使用するプラグインを指定します。これにより、付属のバンドルされたオプティマイザーが上書きされると思います。useimageminjpegtranimagemin

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' 
      })]
    }))
});
于 2015-06-22T14:17:50.413 に答える