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

@eimerreis/linting

v0.5.0

Published

Personal OXC linting and formatting defaults

Downloads

43

Readme

@eimerreis/linting

Personal linting and formatting defaults for new JavaScript/TypeScript projects.

Requires Node ^20.19.0 || >=22.12.0.

Zero peer-dependency setup for consumers: install only @eimerreis/linting.

Built on:

  • oxlint for linting
  • oxfmt for formatting

Default focus:

  • React + TypeScript
  • Next.js
  • Tailwind class sorting
  • Vitest rules

Install

npm add -D @eimerreis/linting

lint also executes react-doctor via:

npx react-doctor -y .

Quick Start

From your project root:

npx @eimerreis/linting init

Or with explicit command name:

npx eimerreis-linting init

This creates:

  • .oxlintrc.json
  • .oxfmtrc.json

And updates package.json scripts (if present) so linting is executed through this package:

  • lint
  • lint:fix
  • format
  • format:check

CLI options

eimerreis-linting init [targetDir] [--force] [--no-editor]
eimerreis-linting lint [targetDir] [--fix] [--ignore-path <path>] [--ignore-pattern <pattern>]
eimerreis-linting format [targetDir] [--check] [--ignore-path <path>] [--ignore-pattern <pattern>]
  • init --force: overwrite existing .oxlintrc.json / .oxfmtrc.json and script values
  • init --no-editor: skip generating VS Code editor support files
  • lint --fix: run oxlint --fix . and then run react-doctor
  • format --check: run oxfmt --check .
  • --ignore-path: add one ignore file (repeatable) for lint/format
  • --ignore-pattern: add one glob pattern (repeatable) for lint/format

react-doctor runs only when the target package has react, react-dom, or next in dependencies/devDependencies/peerDependencies.

Ignoring files

Supported options:

eimerreis-linting lint --ignore-path .gitignore
eimerreis-linting format --check --ignore-path .gitignore --ignore-path .prettierignore
eimerreis-linting lint --ignore-pattern "dist/**" --ignore-pattern "coverage/**"
eimerreis-linting format --check --ignore-path .gitignore --ignore-pattern "**/*.generated.ts"

You can also add a dedicated ignore file at project root:

.eimerreis-lintingignore

If present, it is picked up automatically by both lint and format.

First-time one-shot usage

You do not need to run init first.

npx @eimerreis/linting lint
npx @eimerreis/linting format --check

Behavior:

  • If project config exists (.oxlintrc.* / oxlint.config.*, .oxfmtrc.* / oxfmt.config.*), it uses that.
  • If not, it falls back to the package's built-in defaults.

Editor Support

init also creates editor support files for VS Code:

  • .vscode/settings.json
  • .vscode/extensions.json

These enable OXC as formatter/linter, format-on-save, and source.fixAll.oxc on save.

If you do not want editor files, use:

npx @eimerreis/linting init --no-editor

CI Usage

For CI you can run directly with npx (no scaffold step required):

npx @eimerreis/linting lint
npx @eimerreis/linting format --check

Manual Setup

If you do not want to use the init script, create the config files manually.

.oxlintrc.json

{
    "extends": ["./node_modules/@eimerreis/linting/oxlint.config.json"]
}

.oxfmtrc.json

{
    "extends": ["./node_modules/@eimerreis/linting/oxfmt.config.json"]
}

Scripts

Generated project scripts:

{
    "scripts": {
        "lint": "eimerreis-linting lint",
        "lint:fix": "eimerreis-linting lint --fix",
        "format": "eimerreis-linting format",
        "format:check": "eimerreis-linting format --check",
        "lint:ignore": "eimerreis-linting lint --ignore-path .eimerreis-lintingignore",
        "format:check:ignore": "eimerreis-linting format --check --ignore-path .eimerreis-lintingignore"
    }
}

init also adds this dev dependency automatically (if missing):

{
    "devDependencies": {
        "@eimerreis/linting": "^<current-version>"
    }
}

Publish

Git-based release workflow (Changesets + GitHub Actions)

  1. Create a changeset:
npm run changeset
  1. Commit .changeset/*.md and push to main.
  2. Workflow Release checks for pending changesets.
  3. If changesets exist, it versions, publishes via npm trusted publishing (OIDC), commits chore: version packages, and creates a GitHub Release (v<version>) using the matching CHANGELOG.md section as release notes.

Trusted publishing setup (one-time on npmjs.com):

  1. Package @eimerreis/linting -> Settings -> Trusted Publisher
  2. Provider: GitHub Actions
  3. Organization/user: eimerreis
  4. Repository: eimerreis-linting
  5. Workflow filename: release.yml

No NPM_TOKEN secret is required for publishing.