Highly customizable plugin for generating responsive images.
npm i -D gulp-srcset
# or
yarn add -D gulp-srcset
import srcset from 'gulp-srcset';
gulp.task('images', () =>
gulp.src('src/*.{jpg,png}')
.pipe(srcset([{
match: '(min-width: 3000px)',
width: [1920, 1280, 1024, 860, 540, 320],
format: ['jpg', 'webp']
}], {
skipOptimization: true
}))
.pipe(gulp.dest('static'))
);
Plugin options:
interface ICommonConfig {
/**
* Object with Sharp configs for each supported format.
*/
processing?: Partial<IProcessingConfig>;
/**
* Object with imagemin plugins for each format.
*/
optimization?: Partial<IOptimizationConfig>;
/**
* Do not optimize output images.
*/
skipOptimization?: boolean;
/**
* Generate images with higher resolution than they's sources are.
*/
scalingUp?: boolean;
/**
* Postfix string or function to generate postfix for image.
*/
postfix?: Postfix;
}
/**
* First argument: IPluginRule[]
*/
interface IPluginRule extends ICommonConfig {
/**
* There is support of 3 types of matchers:
* 1. Glob pattern of file path;
* 2. Media query to match image by size;
* 3. `(path: string, size: ISize, source: Vinyl) => boolean` function.
*/
match?: Matcher;
/**
* Output image(s) formats to convert.
*/
format?: SupportedExtension|SupportedExtension[];
/**
* Output image(s) widths to resize, value less than or equal to 1 will be detected as multiplier.
*/
width?: number|number[];
}
/**
* Second argument:
*/
interface IPluginConfig extends ICommonConfig {
/**
* Print additional info about progress.
*/
verbose?: boolean;
}