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

niteo-cli

v0.3.0

Published

Standalone Rust CLI for TypeScript structural linting.

Readme


Niteo is a standalone Rust CLI for structural linting in TypeScript projects.

It checks project shape, module boundaries, and source structure rather than formatting. Niteo ships 54 opinionated rules, builds a full import graph, and runs as a single binary with no plugins to configure. It uses oxc for AST parsing.

Why Niteo?

| Tool | Focus | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ESLint | Code-level linting: style, correctness, and patterns within individual files. | | Knip | Unused exports, files, and dependencies. Finds dead code. | | dependency-cruiser | Dependency rules between modules. Validates import constraints. | | Niteo | Opinionated architecture and structural conventions. Enforces how a project is shaped: file layout, export style, module boundaries, domain boundaries, and import hygiene — all in one fast standalone CLI. |

Niteo complements ESLint and Knip rather than replacing them. Where ESLint checks what your code does and Knip checks what your code uses, Niteo checks how your project is organized.

Features

  • 54 structural rules covering exports, barrel files, directory shape, imports, hooks, components, and unsafe TypeScript patterns. See the full rule reference.
  • Baselines — snapshot existing violations so CI only fails on new issues. Adopt Niteo incrementally without fixing every file first.
  • Suppressions — inline niteo-ignore-file, niteo-ignore-next-line, and niteo-ignore-line directives for narrow exceptions. Stale directive detection keeps suppressions honest.
  • Monorepo configs — cascading niteo.toml files. Set defaults at the workspace root and override per package. Rule options merge field-by-field.
  • Import graphniteo stats shows fan-out and most-imported files. niteo graph outputs DOT or JSON for visualization and tooling.
  • SARIF output--format sarif integrates with GitHub Code Scanning, Azure DevOps, and any SARIF-compatible dashboard.
  • NDJSON output--format ndjson produces one valid JSON object per line for streaming consumption.
  • Watch modeniteo lint --watch re-lints on every file change during development.
  • Cacheniteo lint --cache caches import graph analysis for faster repeated runs. Automatically invalidated when files, config, or Niteo version changes.
  • Health score — every run produces a 0–100 score so you can track structural health over time.
  • Git-aware scanning--git limits analysis to changed files, keeping feedback fast on large codebases. Interactive mode auto-detects changed files with best-effort fallback.

Installation

With Homebrew:

brew install FrozenProductions/niteo/niteo

Or tap first:

brew tap FrozenProductions/niteo
brew install niteo

The Homebrew tap is published at https://github.com/FrozenProductions/homebrew-niteo.

Run directly with npx:

npx niteo-cli lint

Or install globally:

npm i -g niteo-cli
niteo lint

The npm package ships prebuilt binaries for common platforms. Rust is only required when building from source or using an unsupported platform.

Usage

niteo lint              # Scan for structural issues
niteo init              # Create niteo.toml
niteo baseline create   # Snapshot current violations
niteo rules             # List configured rules
niteo explain no-console

Examples:

niteo lint --root src
niteo lint --scope src/components
niteo lint --format json --output report.json
niteo lint --format sarif --output report.sarif
niteo lint --watch
niteo lint --git
niteo lint --fail-on error
niteo lint --cache
niteo lint --cache --watch
niteo stats
niteo graph

Monorepos

Niteo supports cascading configs. Place a niteo.toml at the workspace root and additional niteo.toml files inside individual packages. Child configs merge on top of the root config, overriding only the fields they declare.

# niteo.toml (root)
[project]
root = "packages"

[rules.no-console]
severity = "warn"
# packages/admin/niteo.toml
[rules.no-console]
severity = "error"

See Configuration for merge semantics and examples.

Documentation

See the full documentation.