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

@tspub-dev/tspub

v1.0.0

Published

The unified TypeScript package toolkit — init, build, check, publish in one tool. tspub builds itself.

Readme

tspub

Replaces tsup + publint + attw + changesets. One dependency, 70 lint rules, zero config.

npm downloads tests license

Docs · Playground · npm

Why

Publishing a TypeScript package correctly means juggling tsup, publint, attw, changesets, and a bunch of config files. tspub replaces all of them.

| Before | After | |:--|:--| | tsup + publint + arethetypeswrong + changesets + np | tspub |

Install

npm i -D @tspub-dev/tspub
# or: pnpm add -D @tspub-dev/tspub
# or: yarn add -D @tspub-dev/tspub

Or run directly: npx @tspub-dev/tspub check

What it does

70 rules that catch broken exports, bad types, missing files, and metadata issues — before your users do.

$ npx @tspub-dev/tspub check

exports/types-order      "types" should be first in conditions
exports/file-exists      ./dist/index.js doesn't exist
types/false-cjs-esm      types say ESM, but it's actually CJS
metadata/license         missing license field

4 problems found (3 auto-fixable)
$ npx @tspub-dev/tspub check --fix

Fixed 3 problems. 1 requires manual fix (types/false-esm).

Commands

tspub check                    # lint your package (70 rules)
tspub check --fix              # auto-fix what's safe
tspub build                    # bundle with esbuild (ESM + types)
tspub build --format esm,cjs   # dual format
tspub publish patch            # bump, build, check, publish
tspub doctor                   # diagnose tsconfig/env issues
tspub doctor --fix             # auto-repair
tspub scan user/repo           # audit any GitHub repo
tspub init my-package          # scaffold a new package
tspub changeset add            # add a changeset for versioning

Rules

| Category | Count | Examples | |:--|:--|:--| | exports | 28 | types-first, file-exists, format-mismatch, ESM/CJS conditions | | types | 14 | false-cjs-esm, resolution failures, missing declarations | | metadata | 11 | license, engines, deprecated fields, repository format | | files | 10 | sensitive files leaked, wrong shebang, format validation | | imports | 6 | import map validation, resolution checks | | size | 1 | package size budget |

Covers everything publint and attw check, plus more.

Config

Zero config by default. Customize if needed:

// tspub.config.ts
export default {
  build: {
    formats: ["esm", "cjs"],
    entry: "src/index.ts",
  },
  check: {
    severityOverrides: {
      "exports/types-order": "off",
    },
  },
};

Monorepos

Works with pnpm, yarn, and npm workspaces.

tspub build --filter "@myorg/*"
tspub check --filter "packages/core"

API

import { check, build, doctor, scan } from "@tspub-dev/tspub";

const results = await check({ dir: ".", fix: true });
await build({ formats: ["esm", "cjs"] });

Requirements

Node 20+, TypeScript 5+ recommended.

License

MIT