0

デフォルトとは異なるプラグインを gulp-imagemin 5.2.1 で使用するのに問題があります。デフォルトの jpegtran プラグインが可逆圧縮で行う以上に jpeg を圧縮する必要があります。imagemin-jpeg-recompress 5.1.0 を使ってみたかった。これが私の一気飲みの仕事です:

var imagemin = require('gulp-imagemin');
var imageminJpegRecompress = require('imagemin-jpeg-recompress');
gulp.task('imagemin', function(){
    return gulp.src(['./app/img/**'], {base:'app'})
    .pipe(plumber({errorHandler: onerror}))
    .pipe(imagemin({
      plugins:[imageminJpegRecompress({
        quality: 'low'
      })]
    }))
    .pipe(gulp.dest('dist/app/'));
});

これを実行すると、圧縮方法が変更される前とまったく同じ画像が得られます。「プラグイン」オプションさえ表示されていないように見えます。または、jpegRecompress の後ですべてのデフォルト プラグインをまだ実行している可能性があります。gulp ファイルで imagemin プラグインを呼び出すにはどうすればよいですか?

注: 彼らは「プラグイン」オプションを変更しました。「plugins」オプションは、以前は「use」という名前でした。

4

1 に答える 1

0

「use」オプションの名前が「plugins」に変更されたことは正しいですが、この問題を自分で調べたところ、プラグインに関して、gulp-imagemin (使用しているもの) の構文がスタンドアロンの imagemin とわずかに異なることに気付きました。構成。*

これはうまくいくはずです:

gulp.task('imagemin', function() {
    return gulp.src(['./app/img/**'], {base:'app'})
    .pipe(plumber({errorHandler: onerror}))
    .pipe(imagemin([
        imagemin.gifsicle(),
        imageminJpegRecompress({ quality: 'low' }),
        imagemin.optipng(),
        imagemin.svgo()
    ]))
    .pipe(gulp.dest('dist/app'));
});

カスタム プラグイン配列を渡しているため、gulp-imagemin Github ページの指示に従って、他のファイル タイプのプラグインを宣言していることに注意してください。この場合、オブジェクトで渡すオプションの jpeg-recompress を除いて、デフォルトを宣言するだけです。

出典:
diff の例を含む API の変更
プロジェクトの問題トラッカーに関する関連する議論

*バージョンについて: imagemin の最新バージョンは 5.2.x ですが、gulp-imagemin には 3.0.x という別のバージョンがあります。さらに紛らわしいことに、imagemin-jpeg-recompress は 5.1.0 です。これらの組み合わせはあまり役に立ちませんが、各プロジェクトのページで差分を調べるときに役立つかもしれません。

于 2016-07-08T01:45:53.990 に答える