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

Detector de copiar y pegar para código fuente de programación. Admite más de 224 formatos. AI-Ready con servidor MCP y un generador de informes eficiente en tokens. Ahora con un motor basado en Rust: entre 24 y 37 veces más rápido.

jscpd implementa el algoritmo de Rabin-Karp para encontrar bloques de código duplicados en los archivos.

Inicio rápido

# 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

Documentación

Documento

Descripción

TypeScript (v4.x)

Motor Node.js: CLI, generadores de informes, configuración y modos de detección

Rust (v5.x)

Motor Rust: instalación, CLI, generadores de informes, blame y API de Rust

AI-Ready

Generador de informes de IA, habilidades de agente, servidor MCP

API de programación

API programáticas de TypeScript y Rust

CI y hooks de pre-commit

GitHub Action, hooks de pre-commit

Paquetes

Resumen de paquetes y crates del monorepo

Dos motores

TypeScript (v4)

Rust (v5)

Paquete npm

jscpd@4

jscpd@5 o cpd

Comando CLI

jscpd

jscpd (de jscpd@5) o cpd (de cpd)

Velocidad

Referencia

Entre 24 y 37 veces más rápido

Formatos

224

223

Requiere Node.js

No (binario autónomo)

API de programación

TypeScript (jscpd(), detectClones())

Rust (crate cpd-finder)

Almacén LevelDB

No

Generadores de informes

13

13

jscpd@5 instala el comando jscpd. El paquete npm cpd instala el comando cpd. Ambos contienen el mismo binario de Rust. Para obtener ambos nombres de comando desde una sola instalación, usa crates.io: cargo install jscpd.

Novedades

v5.0.x — Motor Rust

jscpd v5 es una reescritura completa en Rust desde cero que se distri buye como jscpd@5 (instala el comando jscpd) o como cpd (instala el comando cpd). Binario autónomo: no requiere el entorno de ejecución de Node.js.

La misma interfaz, entre 24 y 37 veces más rápido:

  • Se conservan todas las opciones CLI de v4: reemplazo directo: jscpdjscpd@5

  • Mismo archivo de configuración .jscpd.json, mismo algoritmo de detección, mismos generadores de informes

  • 223 formatos de lenguaje con detección entre formatos (Vue SFC, Svelte, Astro, Markdown)

Novedades en v5:

  • Detección entre 24 y 37 veces más rápida en proyectos reales (consulta el benchmark)

    • Bases de código pequeñas (548 archivos): 34 veces más rápida

    • Bases de código medianas (9K archivos): 37 veces más rápida

    • Bases de código grandes (17K archivos, 900 MB): 24 veces más rápida

  • Git blame con comparación lado a lado de autores (--blame --reporters console-full)

  • --workers — controla el paralelismo para la tokenización de archivos y la detección (por defecto: automático, usa todos los núcleos de CPU; no disponible en v4)

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

  • Generador de informes de IA — salida eficiente en tokens para pipelines de LLM (~79% menos tokens que la consola)

  • --mcp — servidor MCP integrado sobre stdio: apunta tu asistente de IA al binario y podrá comprobar fragmentos de código para detectar duplicados en tu base de código (consulta la documentación)

  • --summary — resumen de la base de código: archivos y carpetas principales por tokens, líneas, tamaño y una estimación de complejidad: puntos calientes de refactorización directamente desde el escaneo (consulta la documentación)

  • Binario autónomo — precompilado para 7 plataformas (macOS arm64/x64, Linux arm64/x64, Windows arm64/x64)

Aún no en v5 (usa v4 para estos):

  • Almacenes LevelDB/Redis (--store leveldb)

  • API de programación de Node.js (jscpd(), detectClones())

Consula la documentación de Rust para la referencia completa de la CLI y las diferencias con v4.

v4.2.x — Motor TypeScript

  • Backend del tokenizador personalizado: se reemplazó prismjs por un back end propio construido sobre reprism. Tokenización ~11.5% más rápida en proyectos reales

  • Detección entre formatos: Vue SFC, Svelte, Astro y Markdown tokenizados por bloque, lo que permite la detección entre tipos de archivo

  • Nuevos formatos: Apex, CFML/ColdFusion, GDScrit y más de 70 formatos adiciones (224 en total, antes 152)

  • Detección de shebang: detecta automáticamente el lenguaje de los scripts sin extensión

  • --store-path: configura el directorio de caché de LevelDB para ejecuciones en paralelo

  • --skipComments: abreviatura de --mode weak

  • --formats-names: asigna nombres de archivo (p. ej. Makefile, Dockerfile) a formatos

  • --noTips: suprime la salida de consejos en CI

  • Corrección de errores: duplicados de archivos completos descartados silenciosamente (#728), ReDoS en archivos Lisp/Elisp (#737), caída del proceso con package.json malformado (#739), detección entre archivos de Vue SFC (#737), núme ros de columna en Vue SFC (#737), 50 vulnerabilidades de seguridad en dependencias

Consula la documentación de TypeScript para la referencia completa de la CLI.

Paquetes

Paquete

Descripción

jscpd

CLI y API de Node.js (v4.x)

jscpd-server

API REST + servidor MCP

@jscpd/core

Algoritmo de detección del núcleo

@jscpd/finder

Detección de archivos, generadores de informes

@jscpd/tokenizer

Tokenización de código fuente

@jscpd/html-reporter

Informe HTML

@jscpd/badge-reporter

Insignia SVG

jscpd-sarif-reporter

SARIF (GitHub Code Scanning)

@jscpd/leveldb-store

Almacén persistente LevelDB

@jscpd/redis-store

Almacén distribuido Redis

cpd (motor Rust)

Motor basado en Rust (v5.x): también disponible como jscpd@5

Quién usa jscpd

El paquete npm jscpd se descarga más de 10M de veces al mes, y ~5.000 repositorios lo declaran en el gráfico de dependientes de GitHub.

Incluido por plataformas de análisis:

  • GitHub Super Linter — agregador de linters oficial de GitHub, incluye jscpd como su detector de copiar y pegar

  • MegaLinter — agregador de linters de código abierto para CI, incluye jscpd en todas sus variantes, incluida ci_light

  • Codacy — plataforma automatizada de análisis de código, jscpd impulsa el motor de detección de duplicados

Usado en proyectos destacados:

Rendimiento

Evaluado en macOS (Apple Silicon), 10 ejecuciones por objetivo (3 para CopilotKit). v4 se ejecutó con --no-gitignore -i "node_modules" para garantizar un escaneo de archivos comparable.

Objetivo

Archivos

Tamaño

jscpd v4

jscpd v5

Aceleración

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

Consulta performance-comparison.md para ver la metodología completa y los datos brutos.

Funciones AI-Ready

jscpd se integra en flujos de trabajo impulsados por IA mediante tres mecanismos:

Generador de informes de IA

Salida eficiente en tokens para pipelines de LLM (~79% menos tokens que el generador de informes de consola por defecto):

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

Habilidades de agente

Dos habilidades instalables que enseñan a los asistentes de codificación con IA a usar jscpd y a refactorizar las duplicaciones detectadas:

Habilidad

Propósito

Instalación

jscpd

Referencia de la herramienta: opciones de CLI, formato del generador de informes de IA, sintaxis de configuración

npx skills add kucherenko/jscpd --skill jscpd

dry-refactoring

Flujo de trabajo de refactorización guiada: leer los clones, elegir la estrategia, aplicarla, verificar

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

Después de la instalación, pide a tu agente que «encuentre y corrija la duplicación de código» e invocará jscpd con las opciones adecuadas y actuará sobre los resultados.

Consulta la documentación AI-Ready para conocer todos los detalles.

Contribuciones

Consulta CONTRIBUTING.md para la configuración de desarrollo (Rust y TypeScript), la política de pruebas y los requisitos para las pull requests aceptables. Los problemas de seguridad se gestionan a través de la política de seguridad, no mediante incidencias públicas.

  1. Haz un fork del repositorio kucherenko/jscpd

  2. Clona el fork (git clone https://github.com/{your-id}/jscpd)

  3. Instala las dependencias (pnpm install)

  4. Ejecuta en modo de desarrollo: pnpm dev

  5. Añade tus cambios

  6. Añade pruebas y comprueba: pnpm test

  7. Compila: pnpm build

  8. Crea un PR

Mecenas

¡Gracias a todos nuestros mecenas! 🙏 [Conviértete en mecenas]

Patrocinadores

Apoya este proyecto convirtiéndote en patrocinador. Tu logo aparecerá aquí con un enlace a tu sitio web. [Conviértete en patrocinador]

Licencia

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