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

@forthtilliath/eslint-config

v0.1.0

Published

Shared ESLint flat configs (`eslint.config.js`/`.ts`) — for every package/app in this monorepo, and for any other project that wants the same setup via a single import instead of hand-assembling a dozen plugins. Built on `typescript-eslint`'s `strictTy

Downloads

183

Readme

@forthtilliath/eslint-config

Shared ESLint flat configs (eslint.config.js/.ts) — for every package/app in this monorepo, and for any other project that wants the same setup via a single import instead of hand-assembling a dozen plugins. Built on typescript-eslint's strictTypeChecked + stylisticTypeChecked presets, with import sorting, Turborepo's own lint plugin, and Prettier conflict-resolution baked in.

Install

npm install --save-dev @forthtilliath/eslint-config eslint typescript

Or, from within this monorepo, as a workspace dependency:

{
  "devDependencies": {
    "@forthtilliath/eslint-config": "workspace:*"
  }
}

eslint and typescript are peer dependencies — install them yourself (any recent flat-config-era ESLint 9+/10+, and TypeScript 5+). Every ESLint plugin each variant actually uses (typescript-eslint, eslint-plugin-react, angular-eslint, etc.) ships as a regular dependency of this package, so there's nothing else to install per variant.

Usage

Pick the variant that matches the package, in its eslint.config.ts:

// A plain TypeScript library (packages/lib, packages/types)
import { baseConfig } from "@forthtilliath/eslint-config";
export default baseConfig;
// A React library (packages/react/*)
import { reactConfig } from "@forthtilliath/eslint-config/react";
export default reactConfig;
// A Next.js app (apps/web)
import { nextJsConfig } from "@forthtilliath/eslint-config/nextjs";
export default nextJsConfig;
// A Storybook app (apps/react-sb)
import { storybookConfig } from "@forthtilliath/eslint-config/storybook";
export default storybookConfig;
// An Angular app/library
import { angularConfig } from "@forthtilliath/eslint-config/angular";
export default angularConfig;

All five are named exports — a default import (import config from "...") resolves to the whole module namespace object instead of the config array and crashes ESLint's flat-config loader outright. Two of the five variants had exactly this bug at one point; use the named-import form above.

Each variant is additive: reactConfig/angularConfig extend baseConfig, nextJsConfig/storybookConfig extend reactConfig.

Typed linting and non-project files

Rules that need type information (consistent-type-exports, naming-convention, etc.) are scoped to **/*.{ts,tsx,mts,cts} only, and eslint.config.js/.ts, storybook-static/** and dist/** are excluded from linting entirely — none of them belong to a package's own tsconfig project, so type-aware rules crash on them otherwise.

Scripts

pnpm run build        # tsc -> dist/ (consumers import the built output)
pnpm run dev           # tsc --watch
pnpm run check-types   # tsc --noEmit
pnpm run lint          # eslint (lints its own src/)

Run pnpm run build after editing src/*.js — consuming packages resolve @forthtilliath/eslint-config/* to dist/*.js, not the source.