web-dev-qa-db-fra.com

Utilitaire de diff basé sur JavaScript

Je recherche un diff équivalent écrit en JavaScript qui ne retourne/imprime que les lignes pertinentes. Je ne veux pas que le texte intégral soit affiché côte à côte avec les différences mises en évidence, mais je veux juste les différences réelles (ainsi que certaines lignes de tampon pour savoir où se trouve la différence), similaires à la sortie de l'utilitaire diff de linux.

Quelqu'un connaît-il une fonction javascript qui fait cela? Toutes les différences doivent être reconnues (même les espaces blancs modifiés). Merci.

64
poke

jsdifflib comparaison du mode en ligne, essayez de modifier la taille du contexte pour afficher uniquement la fenêtre de changement souhaitée. Il y a une démo ici

30
Scott Bale

J'ai complètement reconstruit l'utilitaire jsdifflib pour la vitesse. Étant donné que ma version ne nécessite pas d'accès DOM, elle est au moins 4,5 fois plus rapide, et elle est également étendue pour mettre en évidence les différences de caractères dans chaque ligne.

http://prettydiff.com/diffview.js

Vous pouvez tester cela avec l'outil en ligne directement sur http://prettydiff.com/

31
austincheney

Il y a aussi google-diff-match-patch de Google

Également disponible sur NPM

npm install diff-match-patch
26
Gian Marco Gherardi
  • Mergely vaut vraiment la peine d'être vérifié. Basé sur CodeMirror, côté client uniquement.
  • Ensuite, il y a démo CodeMirror qui nécessite un calcul de différence côté serveur.
  • jsdifflib et prettydiff comme mentionné dans les autres réponses.
5
Daniel F

Découvrez ma mise en œuvre minimale: https://github.com/Slava/diff.js

4
imslavko

Je ne sais pas grand chose sur l'utilitaire diff sous linux ou linux en général, mais c'est peut-être ce que vous recherchez jsdifflib . Vous pouvez y trouver un exemple en direct et voir si cela fonctionne pour vous.

4
realshadow

Découvrez la bibliothèque JavaScript wikEd diff . Il y a aussi un outil en ligne .

wikEd diff propose des comparaisons de texte en ligne avec surlignage de déplacement de bloc et résolution basée sur les caractères/mots. Il est optimisé pour le texte source de Wikipedia, mais fonctionne très bien pour tout type de texte ou de code. Le code de la bibliothèque est entièrement personnalisable, prend en charge Unicode, est largement commenté et est dans le domaine public.

3
Cacycle

Découvrez CodeMirror . Dit Nuff.

3
Tim

vieille question je sais, mais si votre travail de nœud fonctionne ou si vous voulez quelque chose qui est compatible avec le module requirejs/commonjs

J'ai vraiment aimé https://www.npmjs.com/package/diff

console.log(diff.createPatch('some file name.txt', expected, actual));
2
aqm

jsdifflib semble prometteur - essayez la démo liée depuis cette page.

1
Justin Ethier