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

@textmode/lint

v0.1.2

Published

Shared linting and formatting for the textmode.js ecosystem (ESLint, Prettier, markdownlint-cli2).

Readme

@textmode/lint

| JavaScript ESLint Prettier markdownlint | docs Discord | ko-fi GitHub-sponsors | | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

@textmode/lint owns linting and formatting for the textmode.js ecosystem. It bundles the ESLint flat config, Prettier options, and markdownlint-cli2 rules behind one textmode-lint command, so consumers no longer install or configure the engines themselves.

Use it to give every repository the same lint and format behavior without repeating engine dependencies, config files, or ignore rules.

Features

  • One package, three engines - ESLint, Prettier, and markdownlint-cli2 are implementation dependencies, not peer dependencies. Consumers install only @textmode/lint.
  • One command - textmode-lint lint, format, format:check, lint:markdown, and check cover the whole surface.
  • Zero config - Conventional projects need no ESLint, Prettier, or markdownlint configuration. The shared configs ship in the package.
  • Zero ignore duplication - A shared .prettierignore baseline ships with the package and is used only when a project has no .prettierignore of its own.

Installation

npm install -D @textmode/lint

No engine dependencies are required.

Usage

Conventional projects need no configuration. Create eslint.config.js at the project root only so editors and tools can resolve the shared flat config:

export { default } from '@textmode/lint';

Then delegate the standard scripts:

{
	"scripts": {
		"format": "textmode-lint format",
		"format:check": "textmode-lint format:check",
		"lint": "textmode-lint lint",
		"lint:markdown": "textmode-lint lint:markdown",
		"lint:markdown:fix": "textmode-lint lint:markdown --fix"
	}
}

Commands

textmode-lint lint [targets...]
textmode-lint format [targets...]
textmode-lint format:check [targets...]
textmode-lint lint:markdown [--fix]
textmode-lint check
  • lint runs ESLint with the shared flat config (default target .).
  • format formats files in place with Prettier (default target .).
  • format:check verifies formatting without writing.
  • lint:markdown lints Markdown with markdownlint-cli2.
  • check runs format:check, lint, and lint:markdown in order and stops at the first failure.

Every argument after the command is forwarded to the underlying engine, so textmode-lint lint --fix, textmode-lint lint src tests, and textmode-lint lint:markdown --fix work without special handling.

Every command accepts --cwd <directory>, --help, and --version. Exit status 0 means success, 1 means the engine reported a problem, and 2 means the invocation was invalid.

Configuration

ESLint

Re-export the shared flat config from eslint.config.js:

export { default } from '@textmode/lint';

To extend the shared config, compose it into a local flat config array:

import shared from '@textmode/lint';

export default [
	...shared,
	{
		rules: {
			'@typescript-eslint/no-explicit-any': 'off',
		},
	},
];

Prettier

The CLI uses the shared Prettier options and a shared .prettierignore baseline (Markdown and shader files). If a project has its own .prettierignore, Prettier uses it instead.

For editor integration, point the prettier key at the shared options:

{
	"prettier": "@textmode/lint/prettier"
}

markdownlint

The CLI uses the shared markdownlint-cli2 config (globs, ignores, rules, and formatter). A project can override or extend it with its own .markdownlint-cli2.jsonc at the root, which merges with the shared config:

{
	"ignores": ["examples/**/*.md", ".agents/**"],
}

Related packages

@textmode/lint works with the following textmode-tooling packages:

| Package | Relationship | | --------------------------------------------- | -------------------------------------------------------------------------------------- | | @textmode/release | textmode-release format-staged uses @textmode/lint for the shared pre-commit hook | | @textmode/tsconfig | Consumers commonly run type checks alongside lint checks in local package scripts |

License

The @textmode/lint package is licensed under the CC0 1.0 Universal.

Acknowledgements

  • ESLint
    • The linter behind textmode-lint lint.
    • License: MIT.
  • Prettier
    • The formatter behind textmode-lint format and format:check.
    • License: MIT.
  • markdownlint-cli2
    • The Markdown linter behind textmode-lint lint:markdown.
    • License: MIT.