npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@exact-realty/esbuild-plugin-responsive-images

v1.0.11

Published

esbuild plugin for responsive images using Sharp

Downloads

18

Readme

esbuild plugin for responsive images

Reliability Rating Vulnerabilities Bugs Security Rating Maintainability Rating NPM Downloads

How to use

Installing

npm i -D @exact-realty/esbuild-plugin-responsive-images

Configuring esbuild

In the file you have your configuration, first import this plugin

const responsiveImages = require('@exact-realty/esbuild-plugin-responsive-images');

Or using ES module syntax:

import responsiveImages from '@exact-realty/esbuild-plugin-responsive-images';

Then, in your esbuild configuration, add responsiveImages() to the plugins list. Minimal example:

const esbuild = require('esbuild');
const responsiveImages = require('@exact-realty/esbuild-plugin-responsive-images');

await esbuild
	.build({
		entryPoints: ['index.js'],
		outdir: 'build',
		bundle: true,
		format: 'cjs',
		plugins: [responsiveImages()],
	});

Getting responsive images

In index.js, import your images like this:

const image = require('respimg+file:./your-image.png?sizes=12w,13w');

Note that the imported argument is treated as an URI and must follow the URI rules.

Supported arguments

  • sizes: Comma-separated list of width descriptors (###w) or pixel density descriptors (###x). It's not possible to mix descriptor types, and at least one descriptor must be given.
  • outputFormats: Comma-separated list of output formats. If not given, it defaults to the same as the input format.
  • displayWidth: For density descriptors, the intended display width. It defaults to 1024px and has no effect on width descriptors.

Result

The import will return something like this:

{
	width: 200
	height: 133,
	originalWidth: 1333,
	originalHeight: 2000,
	src: 'http://example.com/assets/img1.200w-AAAAAAAA.png',
	sources: [
		[
			'image/png',
			'http://example.com/assets/img1.200w-AAAAAAAA.png 200w,http://example.com/assets/img1.300w-BBBBBBBB.png 300w'
		]
	],
}

The different values are intended to be used as follows:

src refers to the fallback image (the inner <img> element when using the <picture> element; otherwise, the src value of <img>), and width and height refer to the dimensions of this fallback image.

originalWidth and originalHeight refer to the dimensions of the original image. Like width and height, these could be helpful in certain situations where the aspect ratio is needed.

sources refers to the different srcset and type attributes for <source> elements (or the single srcset attribute of the <img> element if not using <picture>).

Thus, this could result in the following HTML:

<picture>
	<!-- Note that there could be many <source> elements, one for each entry in the sources array -->
	<source type="image/png" srcset="http://example.com/assets/img1.200w-AAAAAAAA.png 200w,http://example.com/assets/img1.300w-BBBBBBBB.png 300w" sizes="100%" />
	<img src="http://example.com/assets/img1.200w-AAAAAAAA.png" alt="description" />
</picture>

Since in this case there is a single source, it's possible to use an <img> element directly, without a <picture> container:

<img src="http://example.com/assets/img1.200w-AAAAAAAA.png" alt="description" srcset="http://example.com/assets/img1.200w-AAAAAAAA.png 200w,http://example.com/assets/img1.300w-BBBBBBBB.png 300w" sizes="100%" />