1.1.3 • Published 2 months ago
edit-on-slate v1.1.3
Edit-On-Slate
Slate 기반의 리액트 텍스트 에디터 라이브러리입니다.
특징
- 텍스트 서식 지정 (굵게, 기울임, 밑줄, 코드)
- 블록 스타일 (제목, 인용구, 목록)
- 마크다운 단축키 지원
- 커스터마이징 가능한 스타일
- 리액트 컴포넌트로 쉽게 통합
- 다양한 폰트 및 색상 지원
- 반응형 디자인
설치
npm install edit-on-slate
# 또는
yarn add edit-on-slate
사용법
기본 사용법
import React, { useState } from "react";
import { Editor } from "edit-on-slate";
import { Descendant } from "slate";
const MyEditor = () => {
const [value, setValue] = useState<Descendant[]>([
{
type: "paragraph",
children: [{ text: "에디터에 내용을 입력해보세요!" }],
},
]);
const handleChange = (newValue: Descendant[]) => {
setValue(newValue);
};
return <Editor value={value} onChange={handleChange} />;
};
export default MyEditor;
폰트 사용 방법
이 라이브러리는 기본적으로 CDN을 통해 웹 폰트(Nanum Gothic, Pretendard)를 로드합니다. 빌드에 폰트 파일을 포함하지 않고 다음과 같은 방법으로 폰트를 사용할 수 있습니다:
1. 기본 제공 폰트 사용하기
라이브러리를 import하면 자동으로 CDN을 통해 폰트가 로드됩니다. 별도의 설정이 필요하지 않습니다.
import { Editor } from "edit-on-slate";
// 폰트 스타일시트가 자동으로 로드됩니다
2. 커스텀 폰트 사용하기
자신만의 폰트를 사용하려면 CSS 변수를 재정의하세요:
:root {
--font-family-sans: "나눔고딕", "맑은 고딕", sans-serif;
--font-family-serif: "나눔명조", serif;
--font-family-mono: "D2Coding", monospace;
}
3. CDN 폰트 직접 로드하기
라이브러리의 폰트 로딩을 비활성화하고 직접 폰트를 로드하려면:
<!-- HTML의 head 섹션에 추가 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css">
4. 폰트 로딩 유틸리티 사용하기
라이브러리에서 제공하는 폰트 로딩 유틸리티를 사용하여 폰트 로딩을 최적화할 수 있습니다:
import { loadFontStylesheet, waitForFont, isFontLoaded } from "edit-on-slate";
// 최적화된 방식으로 폰트 스타일시트 로드
loadFontStylesheet('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700&display=swap');
// 폰트가 로드되었는지 확인
const isLoaded = isFontLoaded('Noto Sans KR');
console.log('폰트 로드 여부:', isLoaded);
// 폰트가 로드될 때까지 기다리기
waitForFont('Noto Sans KR').then(loaded => {
if (loaded) {
console.log('폰트가 성공적으로 로드되었습니다!');
} else {
console.log('폰트 로딩 타임아웃');
}
});
// 기본 폰트 로드 (Nanum Gothic, Pretendard)
import { loadDefaultFonts } from "edit-on-slate";
loadDefaultFonts();
Props
속성 | 타입 | 기본값 | 설명 |
---|---|---|---|
value | Descendant[] | - | 에디터의 현재 값 |
onChange | (value: Descendant[]) => void | - | 에디터 값이 변경될 때 호출되는 함수 |
placeholder | string | '내용을 입력하세요...' | 에디터가 비어있을 때 표시되는 텍스트 |
readOnly | boolean | false | 읽기 전용 모드 활성화 여부 |
className | string | - | 에디터 컨테이너에 적용할 CSS 클래스 |
style | React.CSSProperties | - | 에디터 컨테이너에 적용할 인라인 스타일 |
마크다운 단축키
에디터는 다음과 같은 마크다운 단축키를 지원합니다:
#
+ 공백: 제목 1##
+ 공백: 제목 2###
+ 공백: 제목 3>
+ 공백: 인용구-
또는*
또는+
+ 공백: 글머리 기호 목록1.
+ 공백: 번호 매기기 목록
커스터마이징
에디터의 스타일은 CSS-in-JS 라이브러리인 Emotion을 사용하여 구현되었습니다. 스타일을 커스터마이징하려면 컴포넌트를 확장하거나 CSS 클래스를 오버라이드하세요.
배포하기
Edit-On-Slate를 npm에 배포하려면 다음 단계를 따르세요:
- 버전 업데이트:
npm version patch # 패치 버전 업데이트
npm version minor # 마이너 버전 업데이트
npm version major # 메이저 버전 업데이트
- npm에 배포:
npm run publish:npm
Git 릴리스 및 태깅
릴리스를 생성할 때는 다음 가이드라인을 따르세요:
버전 이름에 'v' 접두사 사용하기:
- 예:
v1.0.0
,v2.3.4
- 예:
프로덕션용이 아닌 경우 pre-release 버전 추가:
- 예:
v0.2.0-alpha
,v5.9-beta.3
- 예:
Semantic Versioning 규칙 따르기:
- MAJOR: 호환되지 않는 API 변경 시 (예:
v2.0.0
) - MINOR: 이전 버전과 호환되는 기능 추가 시 (예:
v1.1.0
) - PATCH: 이전 버전과 호환되는 버그 수정 시 (예:
v1.0.1
) - PRE-RELEASE: 개발 단계 표시 (예:
v1.0.0-alpha.1
)
- MAJOR: 호환되지 않는 API 변경 시 (예:
릴리스 노트 작성 시 다음 내용 포함:
- 새로운 기능
- 버그 수정
- 주요 변경 사항
- 사용 중단 예정 기능
새 릴리스는 자동으로 이 저장소의 최신 릴리스로 표시됩니다. 필요한 경우 'Set as the latest release' 옵션을 해제하여 semantic version과 생성 날짜에 따라 최신 릴리스가 결정되도록 할 수 있습니다.
기여하기
- 이 저장소를 포크합니다.
- 새 브랜치를 생성합니다:
git checkout -b feature/amazing-feature
- 변경사항을 커밋합니다:
git commit -m 'Add some amazing feature'
- 브랜치에 푸시합니다:
git push origin feature/amazing-feature
- Pull Request를 제출합니다.
라이센스
MIT