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

@howells/typescript-config

v0.1.6

Published

Self-contained TypeScript config presets.

Readme

@howells/typescript-config

Self-contained TypeScript config presets based on the Total TypeScript decision tree.

The goal is not to invent a second tsconfig philosophy. The goal is to:

  • keep public preset names stable across projects
  • give every consumer the same decision matrix
  • avoid fragile transitive extends resolution in tools that parse tsconfig.json themselves
  • keep only a few house overlays for framework and runtime cases

Why Use This Instead Of The Upstream Package?

If @total-typescript/tsconfig already works for you directly, use it directly.

This package exists for teams that want a small amount of centralisation without creating a second config system. The public presets are self-contained so consumers do not need @total-typescript/tsconfig to be resolvable from their own workspace.

What it adds:

  • stable package-local import paths like @howells/typescript-config/nextjs
  • config files that are safe for tools such as bundlers, CLIs, and config loaders that do not use TypeScript's exact package resolution behavior
  • a couple of thin house overlays for cases the upstream package does not name the way this repo wants to consume them
  • a documented migration path that keeps runtime and emit choices explicit at the leaf tsconfig.json

What it does not add:

  • a new baseline philosophy
  • consumer-specific paths, types, or workspace hacks
  • broad overrides on top of the upstream presets

In practice, this package is mainly useful when you want consistency, pinned upgrades, and a tiny amount of local naming policy across multiple apps and packages.

Language Baseline

All presets target and include the es2023 standard library. That keeps the shared TypeScript baseline aligned with modern lint rules that recommend ES2023 APIs such as immutable array helpers.

Install

npm install -D @howells/typescript-config

Core Presets

These map directly to the Total TypeScript decision tree:

  • @howells/typescript-config/bundler-dom-app
  • @howells/typescript-config/bundler-dom-library
  • @howells/typescript-config/bundler-dom-library-monorepo
  • @howells/typescript-config/bundler-no-dom-app
  • @howells/typescript-config/bundler-no-dom-library
  • @howells/typescript-config/bundler-no-dom-library-monorepo
  • @howells/typescript-config/tsc-dom-app
  • @howells/typescript-config/tsc-dom-library
  • @howells/typescript-config/tsc-dom-library-monorepo
  • @howells/typescript-config/tsc-no-dom-app
  • @howells/typescript-config/tsc-no-dom-library
  • @howells/typescript-config/tsc-no-dom-library-monorepo

Overlays

These are intentionally small:

  • @howells/typescript-config/nextjs
  • @howells/typescript-config/react-library

Examples

Next.js app:

{
  "extends": "@howells/typescript-config/nextjs"
}

React package in a monorepo:

{
  "extends": "@howells/typescript-config/react-library"
}

Non-DOM app checked by TypeScript but built elsewhere:

{
  "extends": "@howells/typescript-config/bundler-no-dom-app"
}

Library emitted by tsc:

{
  "extends": "@howells/typescript-config/tsc-no-dom-library"
}

Rules

  • Do not put consumer-local paths or baseUrl in these shared presets.
  • Do not put workspace-specific types in shared presets unless the preset is explicitly runtime-specific.
  • Do not reintroduce a universal base.json that hides runtime and emit decisions.
  • Do not reintroduce public presets that only forward to a dependency package with extends.
  • Treat changes in compiler behavior as breaking changes when versioning this package.

Upstream

This package follows Matt Pocock's guidance and wraps:

  • https://www.totaltypescript.com/tsconfig-cheat-sheet
  • https://github.com/total-typescript/tsconfig