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

@jacquesramphal/smart-quotes

v0.1.4

Published

Framework-agnostic smart quotes helpers (curly quotes) with safe attribute-value support.

Readme

@jacquesramphal/smart-quotes

Convert straight quotes ( and ) into Unicode smart quotes (‘ ’ “ ”) in human-readable content, without mangling code.

Why

Pasted copy often introduces straight quotes into titles, labels, and prose. If you “smart quote” blindly, you can break things like markup delimiters:

title="I'm "Jacques""

This package gives you:

  • A small API you can call on any string
  • A CLI to scan Markdown/MDX (and template-like files you choose) while avoiding code blocks, inline code, and other unsafe regions

It’s framework-agnostic: it runs in any Node project and does not require any framework runtime.

Install / run

Install (recommended for projects):

npm i -D @jacquesramphal/smart-quotes

Run once without installing:

npx smart-quotes --check

CLI

By default the CLI scans the current directory in check mode (prints files that need changes and exits with code 1).

smart-quotes
smart-quotes --check

Apply fixes in-place:

smart-quotes --write

Scan a specific file or directory:

smart-quotes README.md --check
smart-quotes content/ --write

Control what gets scanned:

smart-quotes --paths src,content --ext .md,.mdx --write

Stdin mode (string transform):

echo "\"I'm \\\"Jacques\\\"\"" | smart-quotes --stdin

Stdin mode, preserving the outer attribute quotes (useful when your input string includes its own delimiter quotes):

echo "\"I'm \\\"Jacques\\\"\"" | smart-quotes --stdin --attr

API

const { toSmartQuotes, toSmartQuotesInsideAttributeValue } = require("@jacquesramphal/smart-quotes");

toSmartQuotes(`I'm "Jacques"`); // → I’m “Jacques”

// Preserves the outer delimiter quotes (safe for attribute-value strings)
toSmartQuotesInsideAttributeValue(`"I'm \"Jacques\""`); // → "I’m “Jacques”"

What it will (and won’t) touch

  • Markdown / MDX: skips fenced code blocks, inline code, raw HTML tags, and link destinations.
  • General guidance: run this on prose/content files, not on source code (JS/TS/etc).

Automate (optional)

  • CI: fail the build when files need changes:
npx smart-quotes --check
  • Pre-commit: auto-fix then stage:
npx smart-quotes --write
git add -A

Notes / expectations

  • This is heuristic, not a full typography engine.
  • Always review diffs after running --write.