eslint-plugin-file-progress-2

June 18, 2026 · View on GitHub

NPM license. NPM total downloads. Latest GitHub release. GitHub stars. GitHub forks. GitHub open issues. Codecov. Repo Checks.

ESLint plugin that improves CLI progress output without changing lint semantics.

Note

Originally created by @sibiraj-s in eslint-plugin-file-progress. Huge thanks for the original plugin.

Demo

  • "Who likes a silent console ¯\(ツ)/¯" - @sibiraj-s, But who doesn't like a little feedback while waiting for a long lint to finish?
    • (Especially when it shows which file is being linted right now!)

Live per-file progress output from the `recommended` preset.

Recommended preset demo

Live per-file progress output from the `recommended-detailed` preset.

Recommended detailed preset demo

Installation

npm install --save-dev eslint-plugin-file-progress-2

Quick start

Use the default preset when you want full per-file progress during local CLI runs:

// eslint.config.mjs
import progress from "eslint-plugin-file-progress-2";

export default [progress.configs.recommended];

Need the recommended baseline with small behavior tweaks (for example fileNameOnNewLine)? Keep the preset and add a targeted override after it:

// eslint.config.mjs
import progress from "eslint-plugin-file-progress-2";

export default [
 progress.configs.recommended,
 {
  rules: {
   "file-progress/activate": [
    "warn",
    {
     fileNameOnNewLine: true,
     throttleMs: 120,
    },
   ],
  },
 },
];

Configure a rule directly

Modern ESLint usage should configure progress behavior as rule options:

// eslint.config.mjs
import progress from "eslint-plugin-file-progress-2";

export default [
 {
  plugins: {
   "file-progress": progress,
  },
  rules: {
   "file-progress/activate": [
    "warn",
    {
     outputStream: "stderr",
     throttleMs: 100,
     ttyOnly: true,
    },
   ],
  },
 },
];

Rule Options

  • For the full option interface, defaults, example usage GIFs, and option-by-option behavior explanation:

Presets

The plugin now ships with these Flat Config-ready presets:

  • recommended: full per-file progress using default options
  • recommended-ci: hides progress when CI === "true"
  • recommended-detailed: enables the detailed completion summary
  • recommended-compact: enables the compact live mode
  • recommended-summary-only: prints only the final summary
  • recommended-tty: enables ttyOnly: true
  • recommended-ci-detailed: hides live output in CI but still prints the detailed summary there

Use any preset exactly the same way:

// eslint.config.mjs
import progress from "eslint-plugin-file-progress-2";

export default [progress.configs["recommended-compact"]];

Migration note

file-progress/compact and file-progress/summary-only were removed from the public rule surface.

If you previously configured either rule directly, migrate to file-progress/activate with mode instead:

rules: {
  "file-progress/activate": ["warn", { mode: "compact" }],
}
rules: {
  "file-progress/activate": ["warn", { mode: "summary-only" }],
}

The preset names recommended-compact and recommended-summary-only still exist. They now enable file-progress/activate with the matching mode.

This is a breaking API change. If you publish it, it should ship in a major release rather than a minor release.

Deprecated configuration fallback

settings.progress still works as a backwards-compatible fallback, but it is now deprecated.

Prefer this:

rules: {
  "file-progress/activate": ["warn", { pathFormat: "basename" }],
}

Instead of this:

settings: {
  progress: {
    hideDirectoryNames: true,
  },
}

If both are present, rule options win.

Rules

Generated from the plugin rule metadata and preset registry.

RuleDescriptionIncluded in presets
file-progress/activateDisplay live per-file lint progress in CLI output.recommended, recommended-ci, recommended-ci-detailed, recommended-compact, recommended-detailed, recommended-summary-only, recommended-tty

CLI-only usage

If you do not want editor integrations to see these runtime rules, keep the plugin out of your shared config and enable it only from the CLI:

npx eslint . --plugin file-progress --rule 'file-progress/activate: warn'

Or expose that through a package script:

{
 "scripts": {
  "lint": "eslint .",
  "lint:progress": "eslint . --plugin file-progress --rule \"file-progress/activate: warn\""
 }
}

Contributing