A lightning-fast frontend build tool designed to leverage JavaScript's native ESM system for unbundled development with instant browser updates.
82
Build a plugin for a frontend build tool that automatically optimizes image files during the build process by converting them to WebP format and generating responsive variants.
The plugin should intercept image files (.png, .jpg, .jpeg) during the build process and generate optimized output. For each input image, the plugin should:
For an input file photo.jpg, the plugin should:
photo.webp (original size in WebP format)photo-thumb.webp (150px wide, maintaining aspect ratio)photo-medium.webp (600px wide, maintaining aspect ratio)photo.js (a JavaScript module with metadata)The JavaScript module should export an object with this structure:
export default {
original: "/path/to/photo.webp",
thumbnail: "/path/to/photo-thumb.webp",
medium: "/path/to/photo-medium.webp",
width: 1920, // original width
height: 1080 // original height
}The plugin should accept configuration options:
sizes: Array of responsive sizes to generate (default: [150, 600])quality: WebP quality setting (default: 80)skipOptimization: Boolean to bypass optimization in certain build modes (default: false)The plugin must integrate with the build tool's lifecycle to:
@generates
/**
* Creates an image optimization plugin
*
* @param {Object} options - Plugin configuration
* @param {number[]} options.sizes - Array of responsive sizes to generate (default: [150, 600])
* @param {number} options.quality - WebP quality setting (default: 80)
* @param {boolean} options.skipOptimization - Skip optimization in certain modes (default: false)
* @returns {Object} Plugin instance with name and hooks
*/
function imageOptimizationPlugin(options = {}) {
// Implementation here
}
module.exports = imageOptimizationPlugin;A frontend build tool with plugin system support.
Provides high-performance image processing capabilities.
Install with Tessl CLI
npx tessl i tessl/npm-snowpackevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10