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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@playform/favicon

v0.1.0

Published

Favicon 🎨

Readme

Favicon 🎨

This Astro integration brings favicon generation utilities to your Astro project.

Desktop icons (light & dark) 🎁

iOS touch icons 🎁

Web app manifest 🎁

Android icons 🎁

Windows tile icons 🎁

Note

Favicon generates static icon files during your Astro build, not on request.

[!IMPORTANT]

Place the Favicon component in your layout's <head> section to include the generated favicon links in your HTML.

Installation 🚀

There are two ways to add integrations to your project. Let's try the most convenient option first!

astro add command

Astro includes a CLI tool for adding first party integrations: astro add. This command will:

  1. (Optionally) Install all necessary dependencies and peer dependencies
  2. (Also optionally) Update your astro.config.* file to apply this integration

To install Favicon, run the following from your project directory and follow the prompts:

Using NPM:

npx astro add @playform/favicon

Using Yarn:

yarn astro add @playform/favicon

Using PNPM:

pnpx astro add @playform/favicon

Install dependencies manually

First, install the Favicon integration like so:

npm install -D -E @playform/favicon

Then, apply this integration to your astro.config.* file using the integrations property:

astro.config.ts

export default {
	integrations: [(await import("@playform/favicon")).default()],
};

Getting started

The integration will now automatically generate favicon files during the Astro build phase. Add the Favicon component to your layout to include the generated links in your HTML:

src/layouts/Layout.astro

---
import Favicon from "@playform/favicon/Favicon";
---

<html>
	<head>
		<Favicon />
	</head>
	<body>
		<slot />
	</body>
</html>

The following favicon files will be generated:

  • favicon.ico
  • favicon.svg
  • favicon-96x96.png
  • apple-touch-icon.png
  • mstile-144x144.png
  • browserconfig.xml
  • manifest.json

Default Settings

You can override any of the default options from the configurations of:

astro.config.ts

export default {
	integrations: [
		(await import("@playform/favicon")).default({
			Settings: {
				Desktop: {
					RegularIconTransformation: {
						Type: "background",
						BackgroundColor: "#ffffff",
						BackgroundRadius: 0.4,
						ImageScale: 0.7,
					},
				},
				Touch: {
					AppTitle: "My App",
				},
				WebAppManifest: {
					Name: "My Application",
					ShortName: "MyApp",
					BackgroundColor: "#ffffff",
					ThemeColor: "#ffffff",
				},
			},
		}),
	],
};

or disable generation entirely:

astro.config.ts

export default {
	integrations: [
		(await import("@playform/favicon")).default({
			Settings: false,
		}),
	],
};

You can see the full option map here: Source/Interface/Option.ts

Custom Source

By default Favicon uses Source/Asset/PlayForm.svg as the icon source. If you'd like to use a different source, add it to the Favicon Source option, as well:

export default {
	integrations: [
		(await import("@playform/favicon")).default({
			Source: "Source/Asset/Icon.svg",
			DarkSource: "Source/Asset/Dark/Icon.svg",
		}),
	],
};

Output Path

By default Favicon outputs files to the root of your site. If you'd like to use a different path, add it to the Favicon Path option, as well:

export default {
	integrations: [
		(await import("@playform/favicon")).default({
			Path: "/Favicon/",
		}),
	],
};

Inject HTML

You can inject the generated favicon HTML directly into your built HTML files by enabling InjectHtml. Add a comment in your layout to control where it is inserted:

<!-- PlayForm/Favicon -->

astro.config.ts

export default {
	integrations: [
		(await import("@playform/favicon")).default({
			InjectHtml: true,
		}),
	],
};

Controlling Logging

You can control the logging by providing a custom Logger function. Pass an empty function to disable all output:

astro.config.ts

export default {
	integrations: [
		(await import("@playform/favicon")).default({
			Logger: () => {},
		}),
	],
};

Changelog

See CHANGELOG.md for a history of changes to this integration.