프로젝트 소개

jsdiff는 Myers O(ND) 차이 알고리즘을 기반으로 하는 JavaScript 텍스트 비교 라이브러리입니다. 여러 세분성에서 텍스트를 비교하기 위한 포괄적인 API를 제공합니다: - **문자 수준 비교** (`diffChars`): 각 유니코드 코드 포인트를 토큰으로 취급하며, 선택적으로 대소문자를 구분하지 않는 비교를 지원합니다. - **단어 수준 비교** (`diffWords`, `diffWordsWithSpace`): 단어와 구두점을 토큰으로 취급하며, 비영어권 단어 분할을 개선하기 위한 선택적 `Intl.Segmenter` 지원을 제공합니다. - **줄 수준 비교** (`diffLines`): 각 줄을 토큰으로 취급하며, 공백 무시, 후행 CR 문자 처리, 줄바꿈을 별도 토큰으로 취급하는 옵션을 제공합니다. - **문장 수준 비교** (`diffSentences`): 문장과 문장 사이의 공백을 토큰으로 취급합니다. - **CSS 비교** (`diffCss`): CSS 토큰을 비교합니다. - **JSON 비교** (`diffJson`): 객체를 포맷된 JSON으로 직렬화하고 줄 단위로 비교하며, 속성을 알파벳순으로 정렬합니다. - **배열 비교** (`diffArrays`): 엄격한 동등성 또는 사용자 정의 비교자를 사용하여 토큰 배열을 비교합니다. 이 라이브러리는 패치 관리 기능도 제공합니다: - **패치 생성**: `createPatch`와 `createTwoFilesPatch`는 구성 가능한 컨텍스트 줄과 헤더 옵션을 사용하여 통합 diff 형식 패치를 생성합니다. - **구조화된 패치**: `structuredPatch`는 프로그래밍 방식 처리에 적합한 hunk 객체를 포함하는 데이터 구조를 반환합니다. - **패치 적용**: `applyPatch`와 `applyPatches`는 퍼즈 팩터 지원, 자동 줄바꿈 변환, 사용자 정의 줄 비교 콜백을 사용하여 통합 diff 패치를 적용합니다. - **패치 파싱**: `parsePatch`는 통합 diff 형식(이름 변경, 복사, 생성, 삭제, 바이너리 파일에 대한 Git 특정 확장 헤더 포함)을 구조화된 객체로 파싱합니다. - **패치 반전**: `reversePatch`는 역 패치를 생성합니다. - **형식 변환**: `convertChangesToXML`과 `convertChangesToDMP`는 변경 객체를 XML 또는 Google의 diff-match-patch 형식으로 변환합니다. 범용 옵션에는 비동기 콜백 모드, 최대 편집 길이 제한, 타임아웃 지원, 토큰별 변경 객체 세분성이 포함됩니다. 이 라이브러리는 `Diff` 클래스를 통해 사용자 정의 비교 동작도 지원하므로, 사용자가 입력 캐스팅, 토큰화, 빈 토큰 제거, 동등성 검사, 결합 함수를 재정의할 수 있습니다. 이 라이브러리는 npm(`npm install diff`)을 통해 사용할 수 있으며, ESM과 CommonJS 임포트를 모두 지원하고 `dist/diff.js`를 통한 직접 브라우저 사용도 지원합니다.