Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A Diff View component for React / Vue / Solid / Svelte / Ink, same as Github

License

NotificationsYou must be signed in to change notification settings

MrWangJustToDo/git-diff-view

Repository files navigation

logo

Git Diff View

A high-performance, feature-rich diff view component for React / Vue / Solid / Svelte

DeployNPM DownloadsNPM License

✨ Highlights

  • 🎨Full Syntax Highlighting - Complete syntax context based on HAST AST
  • High Performance - Web Worker & Node Server support, template mode optimization
  • 🎯Framework Agnostic - React, Vue, Solid, Svelte, and CLI support
  • 🔧Highly Customizable - Widgets, extend data, themes, and flexible rendering
  • 📦Multiple Modes - Git diff or file comparison with Split/Unified views
  • 🌗SSR/RSC Ready - Full server-side rendering and React Server Components support

🎮 Live Demo

Try it online:Git Mode ·File Mode ·GitHub Style

git mode

📸 More Screenshots

file modetheme supportunified view

📦 Installation

# Reactpnpm add @git-diff-view/react# Vuepnpm add @git-diff-view/vue# Solid / Sveltepnpm add @git-diff-view/solidpnpm add @git-diff-view/svelte

View Examples for React / Vue / Solid / Svelte

🚀 Quick Start

React

import{DiffView,DiffModeEnum}from"@git-diff-view/react";import"@git-diff-view/react/styles/diff-view.css";<DiffViewdata={{oldFile:{fileName:"old.ts",content:"..."},newFile:{fileName:"new.ts",content:"..."},hunks:["..."]}}diffViewMode={DiffModeEnum.Split}diffViewTheme="dark"diffViewHighlight/>

Advanced Usage

import{DiffFile,generateDiffFile}from"@git-diff-view/file";// File comparison modeconstfile=generateDiffFile("old.ts",oldContent,"new.ts",newContent,"typescript","typescript");file.initTheme('dark');file.init();file.buildSplitDiffLines();<DiffViewdiffFile={file}/>

More examples:React ·Vue ·Solid

📚 Packages

UI Frameworks

Core Libraries

Syntax Highlighters

🎯 Key Features

  • Split & Unified Views - Switch between side-by-side and unified diff modes
  • Full Syntax Highlighting - Complete context-aware syntax highlighting with HAST AST
  • Light & Dark Themes - Built-in theme support with customization
  • Line Wrapping - Toggle line wrapping for long code lines
  • Widget System - Add custom interactive widgets to diff lines
  • Extend Data - Attach and render custom data per line
  • Web Worker Support - Offload processing for better performance
  • SSR & RSC - Full server-side rendering support for React and Vue
  • Diff Match Patch - Enhanced line-level diff with FastDiff template (experimental)
  • Multiple Platforms - React, Vue, Solid, Svelte, and CLI

⚡ Advanced Features

FastDiff Template (Experimental)

Enhanced line-by-line diff visualization for better readability.

import{setEnableFastDiffTemplate}from'@git-diff-view/core';setEnableFastDiffTemplate(true);
DefaultFastDiff
defaultfastdiff

Template Mode

Optimized rendering mode enabled by default for better performance.Learn more

📖 API Reference

Component Props

PropTypeDescription
dataDiffDataDiff data witholdFile,newFile, andhunks
diffFileDiffFilePre-processed diff file instance
diffViewModeSplit | UnifiedView mode (default:Split)
diffViewThemelight | darkTheme (default:light)
diffViewHighlightbooleanEnable syntax highlighting
diffViewWrapbooleanEnable line wrapping
diffViewFontSizenumberFont size in pixels
diffViewAddWidgetbooleanEnable widget button
renderWidgetLineFunctionCustom widget renderer
renderExtendLineFunctionCustom extend data renderer
extendDataExtendDataAdditional data per line
onAddWidgetClickFunctionWidget button click handler

Styling

// Default styles with Tailwind// next release will remove Tailwind dependency, then the diff-view.css will be pure CSSimport"@git-diff-view/react/styles/diff-view.css";// Pure CSS (no Tailwind conflicts)import"@git-diff-view/react/styles/diff-view-pure.css";

Two Usage Modes

1. Direct Data Mode - Pass raw diff data

<DiffViewdata={{ oldFile, newFile, hunks}}/>

2. DiffFile Instance Mode - Pre-process for better control

constfile=newDiffFile(/* ... */);file.init();file.buildSplitDiffLines();<DiffViewdiffFile={file}/>

🛠️ Development

git clone https://github.com/MrWangJustToDo/git-diff-view.gitcd git-diff-viewpnpm installpnpm run build:packagespnpm run dev:react# or dev:vue, dev:solid, dev:svelte

📄 License

MIT ©MrWangJustToDo


[8]ページ先頭

©2009-2025 Movatter.jp