{"id":26312,"library":"repolinter","title":"Repolinter","description":"Repolinter is a linter for open source repositories, checking for common issues like missing license, README, contributing guide, code of conduct, and changelog files. Version 0.12.0 is the latest stable release (May 2025) with TypeScript type definitions. It supports local and remote repository linting, customizable rulesets (JSON/YAML), and multiple output formats (default, JSON, Markdown). Compared to alternatives like `licensee` or `repo-scope`, Repolinter offers broader checks and integration with git repositories. Release cadence is irregular; last major change was v0.11.0 adding ruleset inheritance.","status":"active","version":"0.12.0","language":"javascript","source_language":"en","source_url":"https://github.com/todogroup/repolinter","tags":["javascript","lint","linter","repository","github","license","readme","open source","typescript"],"install":[{"cmd":"npm install repolinter","lang":"bash","label":"npm"},{"cmd":"yarn add repolinter","lang":"bash","label":"yarn"},{"cmd":"pnpm add repolinter","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Requires Node.js >= v12","package":"node","optional":false}],"imports":[{"note":"Repolinter ships TypeScript types and can be used via ESM or CJS, but recommended import is ESM for bundlers.","wrong":"const repolinter = require('repolinter')","symbol":"repolinter","correct":"import { repolinter } from 'repolinter'"},{"note":"The default export is a function that lints a given directory; use named import if using the programmatic API.","wrong":null,"symbol":"runLint","correct":"import { runLint } from 'repolinter'"},{"note":"Repolinter class is a named export, not default. Common mistake is to try default import.","wrong":"import Repolinter from 'repolinter'","symbol":"Repolinter","correct":"import { Repolinter } from 'repolinter'"}],"quickstart":{"code":"import { runLint } from 'repolinter';\nimport { resolve } from 'path';\n\nasync function main() {\n  const targetDir = resolve('./my-repo');\n  const result = await runLint({\n    targetDir,\n    rulesetFile: undefined, // will look for local config or default\n    dryRun: false,\n    format: 'json'\n  });\n  console.log(JSON.stringify(result, null, 2));\n}\nmain().catch(console.error);","lang":"typescript","description":"Demonstrates programmatic usage of runLint to lint a local repo and output JSON."},"warnings":[{"fix":"Use '--remote' instead of '--git'.","message":"The '--git' flag is deprecated in favor of '--remote' in v0.11.0.","severity":"deprecated","affected_versions":">=0.11.0"},{"fix":"Update ruleset files to version 2 format (refer to schema).","message":"Version 0.9.0 introduced breaking changes in ruleset schema (version 2) and removed legacy configuration support.","severity":"breaking","affected_versions":">=0.9.0"},{"fix":"Parse the markdown output accordingly; use --format json for structured data.","message":"When using --format markdown, the output includes a full report with table, not just summary.","severity":"gotcha","affected_versions":">=0.10.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'npm install -g repolinter' or add to devDependencies.","cause":"Package not installed globally or locally.","error":"Error: Cannot find module 'repolinter'"},{"fix":"Use function require('repolinter') or set 'type': 'module' in package.json.","cause":"Using ESM import in a CommonJS environment.","error":"SyntaxError: Unexpected token 'export'"},{"fix":"Add '\"version\": 2' to your repolinter.json.","cause":"Ruleset file missing or invalid 'version' field.","error":"Error: ruleset must have a version field of type number"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}