Skip to main content
Glama
kucherenko

jscpd

Official
by kucherenko

jscpd

NPM

Crates.io Version

NPM License jscpd CI Socket Badge OpenSSF Scorecard OpenSSF Best Practices

Kopier-/Einfüge-Detektor für Programmquellcode. Unterstützt 224+ Formate. KI-bereit mit MCP-Server und token-effizientem Reporter. Jetzt mit Rust-basierter Engine – 24-37x schneller.

jscpd implementiert den Rabin-Karp-Algorithmus, um doppelte Codeblöcke in Dateien zu finden.

Quick Start

# Install (all platforms — installs the jscpd command)
curl -fsSL https://jscpd.dev/install.sh | bash

# TypeScript engine (Node.js, v4.x)
npm install -g jscpd@4
jscpd /path/to/code
# or use without installing
npx jscpd@4 /path/to/code

# Rust engine (v5.x, 24-37x faster) — installs the jscpd command
npm install -g jscpd@5
jscpd /path/to/code

# Rust engine — cpd command only
npm install -g cpd
cpd /path/to/code

# Rust-native install (exposes both jscpd and cpd)
cargo install jscpd

# Nix (installs both jscpd and cpd)
nix run github:kucherenko/jscpd -- /path/to/code
# or install permanently
nix profile install github:kucherenko/jscpd

# Homebrew (macOS/Linux)
brew install jscpd

Related MCP server: tree-sitter-analyzer

Dokumentation

Dokument

Beschreibung

TypeScript (v4.x)

Node.js-Engine – CLI, Reporter, Konfiguration, Erkennungsmodi

Rust (v5.x)

Rust-Engine – Installation, CLI, Reporter, Blame, Rust-API

AI-Ready

KI-Reporter, Agent-Fähigkeiten, MCP-Server

Programming API

TypeScript- und Rust-Programmierschnittstellen

CI & Pre-Commit Hooks

GitHub Action, Pre-Commit-Hooks

Packages

Monorepo-Paket- und Crate-Übersicht

Zwei Engines

TypeScript (v4)

Rust (v5)

npm-Paket

jscpd@4

jscpd@5 oder cpd

CLI-Befehl

jscpd

jscpd (aus jscpd@5) oder cpd (aus cpd)

Geschwindigkeit

Basis

24-37x schneller

Formate

224

223

Node.js erforderlich

Ja

Nein (eigenständige Binärdatei)

Programmierschnittstelle

TypeScript (jscpd(), detectClones())

Rust (cpd-finder crate)

LevelDB-Speicher

Ja

Nein

Reporter

13

13

jscpd@5 installiert den Befehl jscpd. Das npm-Paket cpd installiert den Befehl cpd. Beide enthalten dieselbe Rust-Binärdatei. Für beide Befehlsnamen aus einer einzigen Installation verwenden Sie crates.io: cargo install jscpd.

Was ist neu

v5.0.x – Rust-Engine

jscpd v5 ist eine vollständige Rust-Neuimplementierung, die als jscpd@5 (installiert den Befehl jscpd) oder cpd (installiert den Befehl cpd) ausgeliefert wird. Eigenständige Binärdatei – keine Node.js-Laufzeit erforderlich.

Gleiche Schnittstelle, 24-37x schneller:

  • Alle CLI-Optionen aus v4 bleiben erhalten – Drop-in-Ersatz: jscpdjscpd@5

  • Gleiche .jscpd.json-Konfigurationsdatei, gleicher Erkennungsalgorithmus, gleiche Reporter

  • 223 Sprachformate mit formatübergreifender Erkennung (Vue SFC, Svelte, Astro, Markdown)

Neu in v5:

  • 24-37x schnellere Erkennung bei realen Projekten (siehe Benchmark)

    • Kleine Codebasen (548 Dateien): 34x schneller

    • Mittlere Codebasen (9K Dateien): 37x schneller

    • Große Codebasen (17K Dateien, 900 MB): 24x schneller

  • Git-Blame mit nebeneinanderliegendem Autorenvergleich (--blame --reporters console-full)

  • --workers – Parallelität für Datei-Tokenisierung und Erkennung steuern (Standard: auto, nutzt alle CPU-Kerne; nicht in v4 verfügbar)

  • 13 Reporter: console, console-full, json, xml, csv, html, markdown, badge, sarif, ai, xcode, threshold, silent

  • KI-Reporter – token-effiziente Ausgabe für LLM-Pipelines (~79% weniger Tokens als console)

  • --mcp – integrierter MCP-Server über stdio: Richten Sie Ihren KI-Assistenten auf die Binärdatei aus, und er kann Snippets auf Duplikate in Ihrer Codebasis prüfen (siehe Dokumentation)

  • --summary – Codebasis-Zusammenfassung: Top-Dateien und -Ordner nach Tokens, Zeilen, Größe und einer Komplexitätsschätzung – Refactoring-Hotspots direkt aus dem Scan (siehe Dokumentation)

  • Eigenständige Binärdatei – vorgebaut für 7 Plattformen (macOS arm64/x64, Linux arm64/x64, Windows arm64/x64)

Noch nicht in v5 (verwenden Sie dafür v4):

  • LevelDB/Redis-Speicher (--store leveldb)

  • Node.js-Programmierschnittstelle (jscpd(), detectClones())

Siehe Rust-Dokumentation für die vollständige CLI-Referenz und Unterschiede zu v4.

v4.2.x – TypeScript-Engine

  • Benutzerdefiniertes Tokenizer-Backendprismjs durch eigenes Backend auf Basis von reprism ersetzt. ~11,5% schnellere Tokenisierung bei realen Projekten

  • Formatübergreifende Erkennung – Vue SFC, Svelte, Astro und Markdown werden blockweise tokenisiert, was die Erkennung über Dateitypen hinweg ermöglicht

  • Neue Formate: Apex, CFML/ColdFusion, GDScript und 70+ weitere Formate (insgesamt 224, gegenüber 152)

  • Shebang-Erkennung – automatische Spracherkennung für Skripte ohne Erweiterung

  • --store-path – LevelDB-Cache-Verzeichnis für parallele Läufe konfigurieren

  • --skipComments – Kurzform für --mode weak

  • --formats-names – Dateinamen (z. B. Makefile, Dockerfile) auf Formate abbilden

  • --noTips – Tipp-Ausgabe in CI unterdrücken

  • Fehlerbehebungen: stilles Verwerfen von Duplikaten ganzer Dateien (#728), ReDoS bei Lisp/Elisp-Dateien (#737), Prozessabsturz bei fehlerhafter package.json (#739), Vue-SFC-Erkennung über Dateien hinweg (#737), Vue-SFC-Spaltennummern (#737), 50 Sicherheitslücken in Abhängigkeiten

Siehe TypeScript-Dokumentation für die vollständige CLI-Referenz.

Pakete

Paket

Beschreibung

jscpd

CLI und Node.js-API (v4.x)

jscpd-server

REST-API + MCP-Server

@jscpd/core

Kern-Erkennungsalgorithmus

@jscpd/finder

Dateierkennung, Reporter

@jscpd/tokenizer

Quellcode-Tokenisierung

@jscpd/html-reporter

HTML-Bericht

@jscpd/badge-reporter

SVG-Abzeichen

jscpd-sarif-reporter

SARIF (GitHub-Code-Scanning)

@jscpd/leveldb-store

LevelDB-persistenter Speicher

@jscpd/redis-store

Redis-verteilter Speicher

cpd (Rust-Engine)

Rust-basierte Engine (v5.x) – auch als jscpd@5 verfügbar

Wer nutzt jscpd

Das npm-Paket jscpd wird über 10 Millionen Mal pro Monat heruntergeladen, und ~5.000 Repositorys führen es im Abhängigkeitsdiagramm von GitHub auf.

Gebündelt in Analyseplattformen:

  • GitHub Super Linter – offizieller GitHub-Linter-Aggregator, bündelt jscpd als Kopier-/Einfüge-Detektor

  • MegaLinter – Open-Source-Linter-Aggregator für CI, liefert jscpd in jeder Variante einschließlich ci_light

  • Codacy – automatisierte Code-Analyseplattform, jscpd betreibt die Duplikations-Engine

Verwendet in bekannten Projekten:

Leistung

Benchmark auf macOS (Apple Silicon), 10 Läufe pro Ziel (3 für CopilotKit). v4 lief mit --no-gitignore -i "node_modules", um vergleichbares Datei-Scannen zu gewährleisten.

Ziel

Dateien

Größe

jscpd v4

jscpd v5

Beschleunigung

fixtures

548

1.5 MB

1.03s

0.03s

34.3x

svelte

9K

38 MB

15.80s

0.43s

36.9x

CopilotKit

17K

159 MB

82.89s

3.44s

24.1x

Siehe performance-comparison.md für die vollständige Methodik und Rohdaten.

KI-bereite Funktionen

jscpd integriert sich über drei Mechanismen in KI-gestützte Arbeitsabläufe:

KI-Reporter

Token-effiziente Ausgabe für LLM-Pipelines (~79% weniger Tokens als der Standard-Console-Reporter):

jscpd --reporters ai /path/to/source              # v4
cpd --reporters ai /path/to/source                # v5
cpd --reporters ai --summary /path/to/source      # v5: + compact codebase summary

Agent-Fähigkeiten

Zwei installierbare Fähigkeiten, die KI-Codierungsassistenten beibringen, jscpd zu verwenden und erkannte Duplikate zu refaktorisieren:

Fähigkeit

Zweck

Installation

jscpd

Werkzeugreferenz – CLI-Optionen, KI-Reporter-Format, Konfigurationssyntax

npx skills add kucherenko/jscpd --skill jscpd

dry-refactoring

Geführter Refactoring-Workflow – Klone lesen, Strategie wählen, anwenden, verifizieren

npx skills add kucherenko/jscpd --skill dry-refactoring

Nach der Installation bitten Sie Ihren Agenten, „Code-Duplikate finden und beheben“ auszuführen, und er wird jscpd mit den richtigen Optionen aufrufen und die Ergebnisse umsetzen.

Siehe KI-bereite Dokumentation für vollständige Details.

Mitwirken

Siehe CONTRIBUTING.md für Informationen zum Entwicklungssetup (Rust und TypeScript), zur Testrichtlinie und zu den Anforderungen für akzeptable Pull Requests. Sicherheitsprobleme werden über die Sicherheitsrichtlinie gemeldet, nicht über öffentliche Issues.

  1. Forke das Repository kucherenko/jscpd

  2. Klone die geforkte Version (git clone https://github.com/{your-id}/jscpd)

  3. Installiere die Abhängigkeiten (pnpm install)

  4. Starte das Projekt im Entwicklungsmodus: pnpm dev

  5. Füge deine Änderungen hinzu

  6. Füge Tests hinzu und prüfe: pnpm test

  7. Erstelle den Build: pnpm build

  8. Erstelle einen PR

Unterstützer

Danke an alle unsere Unterstützer! 🙏 [Werde Unterstützer]

Sponsoren

Unterstütze dieses Projekt, indem du Sponsor wirst. Dein Logo wird hier mit einem Link zu deiner Website angezeigt. [Werde Sponsor]

Lizenz

MIT © Andrey Kucherenko

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
2hResponse time
1wRelease cycle
15Releases (12mo)
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Framework-aware code intelligence MCP server that builds a cross-language dependency graph from source code. 53 integrations (Laravel, Django, Rails, Spring, NestJS, Next.js, and more) across 68 languages. 100+ tools for navigation, impact analysis, refactoring, security scanning, session memory, and CI/PR reports — up to 97% token reduction.
    28
    5,033
    102
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP code-intelligence server for AI agents with pre-indexed AST cache, 62 MCP tools, and TOON-compressed output, enabling token-efficient code analysis and project health grading entirely locally.
    9
    47
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local MCP server that indexes TypeScript/JavaScript projects and returns budget-aware, dependency-optimized context packs for AI coding assistants.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Token-efficient MCP server for multi-language project analysis (Java, TypeScript, JavaScript, Markdown, Python) with plugins, semantic search, and static analysis.
    MIT

View all related MCP servers

Related MCP Connectors

  • Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kucherenko/jscpd'

If you have feedback or need assistance with the MCP directory API, please join our Discord server