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

@lumelabs/eslint-config

v0.4.0

Published

Opinionated, batteries-included ESLint 9 (flat config) for TypeScript projects — frontend and backend.

Readme

@lumelabs/eslint-config

⚠️ Experimental / Internal Use

Primarily intended for personal and internal use. It may change, break, or be restructured at any time. Don't rely on it for public projects unless you're prepared to maintain your own fork. Issues/feature requests may be closed without response.

Opinionated, batteries-included ESLint 9 (flat config) for JavaScript and TypeScript projects — both frontend (React) and backend. Designed for modern setups using Vite/Webpack and Prettier. It prioritizes practical correctness over ideology and avoids rules that create noise or force unnatural code.

Two entry points, matching the project you're linting:

  • @lumelabs/eslint-config — plain JavaScript (+ React/a11y/import). Zero setup.
  • @lumelabs/eslint-config/typescript — everything above, plus the full TypeScript rule set (syntactic and type-aware). Requires a real tsconfig.json.

Features

  • ESLint 9 flat config (eslint.config.js)
  • Batteries includedeslint itself and every plugin are bundled as dependencies. Install one package; you don't add eslint or any plugin yourself.
  • Two clear entry points — plain JS by default, or the full TypeScript rule set (including type-aware rules like no-misused-promises, switch-exhaustiveness-check) via /typescript. No mixing syntactic and type-aware TS rules across configs to reason about.
  • React + React Hooks (incl. the React Compiler rules, tuned to warn) + JSX a11y
  • eslint-plugin-import-x rules (named-exports enforced; default exports disallowed)
  • Prettier-compatible — all formatting rules are turned off; Prettier owns formatting
  • Jest globals auto-enabled for test files only

Requirements

  • ESLint 9 — bundled with this package; do not install eslint separately in your project.
  • TypeScript (only if using the /typescript entry) — provided by your project (declared as an optional peer dependency), with a real tsconfig.json in the project.
  • Node.js 18.18+ / 20+ (per ESLint 9).

Installation

npm install --save-dev @lumelabs/eslint-config

That's it — no other ESLint packages to install.


Usage

Create eslint.config.js (ESM) in your project root:

import lumelabs from "@lumelabs/eslint-config"

export default lumelabs

Or eslint.config.cjs (CommonJS):

const lumelabs = require("@lumelabs/eslint-config")

module.exports = lumelabs

TypeScript projects

The default export (.) is plain JavaScript — no TypeScript parser or plugin at all — so it works with zero setup. For TypeScript projects, use the /typescript entry instead. It layers on the full typescript-eslint rule set — syntactic rules (consistent-type-imports, no-unused-vars, …) and type-aware rules (no-misused-promises, switch-exhaustiveness-check, await-thenable, …) together, as one config. It requires your project to have a real tsconfig.json (auto-discovered via projectService):

import lumelabs from "@lumelabs/eslint-config/typescript"

export default lumelabs

Plain JS/config files within a TypeScript project automatically have type-checking turned back off, so they never error.

Overriding rules per project

The export is a flat-config array — spread it and append your own config objects:

import lumelabs from "@lumelabs/eslint-config"

export default [
    ...lumelabs,
    {
        rules: {
            // e.g. relax the named-exports rule for a framework that needs default exports
            "import-x/no-default-export": "off",
        },
    },
]

Notes

  • Named exports are enforced (import-x/no-default-export). *.cjs files are ignored, so CommonJS config files are unaffected. For frameworks that require default exports (e.g. Next.js pages), override the rule for the relevant paths as shown above.
  • *.stories.* and *.cjs are not linted by default.
  • React Compiler rules (react-hooks/*) are enabled as warnings (not errors), so they nudge rather than block. The compiler-infrastructure rules are off until you adopt the React Compiler — flip them on per-project when you do.
  • Bumping ESLint (e.g. to v10) is centralized here: update this package and republish, and every project follows on its next install.