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

@weave-framework/prettier-plugin

v3.5.0

Published

Prettier plugin for Weave templates — formats .weave SFCs and Weave-template .html files ({{ }}, @if/@for/@switch, on:/bind:/use: bindings) by reusing the Weave compiler's parser.

Readme

@weave-framework/prettier-plugin

A Prettier plugin for Weave templates — formats .weave SFCs and Weave-template .html files ( {{ }} interpolation, @if/@for/@switch/@defer/@await control flow, and on:/bind:/use:/class:/style:/ref bindings ).

Prettier's stock HTML parser throws on the first Weave-specific token (SyntaxError: Opening tag "Button" not terminated), so the usual workaround is to .prettierignore every template — meaning the files you edit most never get formatted. This plugin makes Weave templates first-class in the standard toolchain: format-on-save, prettier --check in CI, and pre-commit hooks all work again.

It does not ship its own grammar. It reuses @weave-framework/compiler's parser, so the formatter can never drift from what actually compiles. Embedded expressions are formatted by delegating to Prettier's own typescript printer; a .weave SFC's <script>/<style> blocks go through the typescript/css/scss printers.

Install

npm install -D @weave-framework/prettier-plugin
# peer dependency:
npm install -D prettier

Usage

Add the plugin to your Prettier config. .weave files are picked up automatically:

// .prettierrc
{
  "plugins": ["@weave-framework/prettier-plugin"]
}

Weave .html templates

.html is also used for plain HTML, so the plugin does not claim every .html globally. Route your Weave templates (the sibling-of-.ts convention) to the weave parser with an overrides entry:

// .prettierrc
{
  "plugins": ["@weave-framework/prettier-plugin"],
  "overrides": [
    { "files": "src/**/*.html", "options": { "parser": "weave" } }
  ]
}

Point the files glob at wherever your Weave templates live. Any .html not matched is left to Prettier's normal HTML formatter, untouched.

What it does

  • Elements / components — attributes on one line when they fit, else one per line; void elements self-close.
  • Bindings preserved by kind — on:x={{ }}, bind:x={{ }}, use:x={{ }}, class:x={{ }}, style:x={{ }}, ref={{ }}, .prop={{ }}, plain attr={{ }}, static attr="…". Kinds and event modifiers are never rewritten.
  • Control flow — @if/@else, @for/@empty, @switch/@case/@default, @defer/ @placeholder, @await/@then/@catch, @let, @snippet/@render, @key are reindented with their @-syntax intact (and @@ stays escaped).
  • Interpolations — the inner expression of every {{ … }} is formatted as TypeScript.
  • SFCs — <script> (TypeScript), template, and <style> (CSS/SCSS) each formatted; block order preserved.
  • Comments — HTML comments are preserved.
  • Idempotent — running it twice produces no further changes.

Whitespace: conservative by design

The current release reindents block structure and formats expressions, but does not aggressively reflow inline text runs — so nothing that could change rendering (significant whitespace between inline elements, <pre>/<textarea> content) is altered.

📚 Guides + full API reference: Tooling guide

License

MIT