{"id":19994,"library":"eslint-remote-tester","title":"eslint-remote-tester","description":"CLI tool for running ESLint rules against multiple remote repositories simultaneously. Current stable version is 4.0.4, released on an irregular cadence. Key differentiators: designed for regression testing of new or modified ESLint rules across many real-world codebases; integrates with CI via GitHub Actions; supports both flat config (eslint@9) and legacy config; ESM-only since v4. Unlike local linting tools, it clones and lints repositories from GitHub to catch false positives, crashes, and unexpected behavior before a rule is published. Requires peer dependencies eslint@>=9, importx@>=0.3.5, jiti@>=1.","status":"active","version":"4.0.4","language":"javascript","source_language":"en","source_url":"https://github.com/AriPerkkio/eslint-remote-tester","tags":["javascript","eslint","eslint-test","typescript"],"install":[{"cmd":"npm install eslint-remote-tester","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-remote-tester","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-remote-tester","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: core linting engine","package":"eslint","optional":false},{"reason":"Peer dependency: used for loading config files","package":"importx","optional":true},{"reason":"Peer dependency: used for loading TypeScript config files","package":"jiti","optional":true}],"imports":[{"note":"Config is a type, not a value. Use type-only import. Available since v4.","wrong":"import { Config } from 'eslint-remote-tester'","symbol":"Config","correct":"import type { Config } from 'eslint-remote-tester'"},{"note":"Package is ESM-only since v4. CommonJS require() will throw ERR_REQUIRE_ESM.","wrong":"const eslintRemoteTester = require('eslint-remote-tester')","symbol":"default (main CLI)","correct":"import eslintRemoteTester from 'eslint-remote-tester'"},{"note":"runProgrammatically is a named export, not the default. Use destructured import.","wrong":"import runProgrammatically from 'eslint-remote-tester'","symbol":"runProgrammatically","correct":"import { runProgrammatically } from 'eslint-remote-tester'"}],"quickstart":{"code":"// Install: npm install --save-dev eslint-remote-tester eslint\n// Create eslint-remote-tester.config.js (ESM)\nimport js from '@eslint/js';\n\n/** @type {import('eslint-remote-tester').Config} */\nconst config = {\n  repositories: ['mui-org/material-ui', 'reach/reach-ui'],\n  extensions: ['js', 'jsx', 'ts', 'tsx'],\n  eslintConfig: [js.configs.recommended],\n  pathIgnorePattern: `(${[\n    'node_modules',\n    '\\\\/\\\\.',\n    'test-results',\n    'docs',\n  ].join('|')})`,\n};\n\nexport default config;\n\n// Run CLI:\n// npx eslint-remote-tester","lang":"typescript","description":"Shows creation of a configuration file with flat config (ESM), listing remote repos, extensions, and ignore patterns. Run via npx."},"warnings":[{"fix":"Use import syntax or dynamic import(). Ensure your project's package.json has \"type\": \"module\" or use .mjs extension.","message":"Package converted to ESM-only in v4.0.0. CommonJS require() will fail.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Upgrade eslint to >=9 and migrate to FlatConfig. Use eslintConfig array instead of .eslintrc.","message":"Dropped support for eslint@<9 in v4.0.0. eslint@9 with FlatConfig is required.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Wrap your eslintConfig in an array, e.g. eslintConfig: [config].","message":"The eslintConfig option changed from a single config object to an array in v4.0.4.","severity":"breaking","affected_versions":">=4.0.0 <4.0.4"},{"fix":"Install jiti@>=2 or importx@>=0.3.5 as a peer dependency. jiti@^2 support fixed in v4.0.3.","message":"TypeScript config loading via jiti@^1 is deprecated; jiti@^2 or importx@>=0.3.5 recommended.","severity":"deprecated","affected_versions":">=4.0.0"},{"fix":"Ensure git is installed and on the PATH. Test with 'git --version'.","message":"The underlying git integration requires git CLI to be installed and callable as 'git'.","severity":"gotcha","affected_versions":"all"},{"fix":"Upgrade to v4.0.1 or later to fix Windows path issues.","message":"Loading config on Windows could fail before v4.0.1.","severity":"gotcha","affected_versions":"<4.0.1"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Switch to import syntax: import eslintRemoteTester from 'eslint-remote-tester' or use dynamic import().","cause":"Attempting to require() an ESM-only package with CommonJS require().","error":"Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: ...\\node_modules\\eslint-remote-tester\\dist\\index.js"},{"fix":"Wrap your eslintConfig in an array: eslintConfig: [config].","cause":"The eslintConfig option expects an array in v4.0.4+, but a single config object was provided.","error":"TypeError: eslintConfig is not iterable"},{"fix":"Install jiti: npm install --save-dev jiti","cause":"jiti is a peer dependency required for loading TypeScript config files, but not installed.","error":"Error: Cannot find module 'jiti'"},{"fix":"Ensure jiti@>=2 or importx@>=0.3.5 is installed. For jiti@^1, upgrade to v2.","cause":"TypeScript config file cannot be loaded if TS support dependencies are missing or misconfigured.","error":"Error: Failed to load config from eslint-remote-tester.config.ts"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}