Discourse를 플러그인, 테마 및 테마 구성 요소로 확장하는 방법, 코어 코드 작업 및 Discourse API 사용법에 대한 문서입니다.
소개
- 소개: Discourse 개발 입문
개발 환경
- Dev Container: Dev Container를 사용하여 Discourse 개발하기
- GitHub Codespaces: GitHub Codespaces에서 Discourse 개발하기
- Docker 설정: Docker를 사용하여 개발용 Discourse 설치하기
- macOS 설정: macOS에서 개발용 Discourse 설치하기
- Ubuntu/Debian 설정: Ubuntu 또는 Debian에서 개발용 Discourse 설치하기
- Windows 설정: Windows에서 개발용 Discourse 설치하기
- 비-Docker 플러그인: 비-Docker 개발 환경에서 플러그인 설치하기
- 로컬 설정: 로컬 Discourse 개발 환경 설정하기?
- 멀티사이트 설정: 멀티사이트 개발 환경 설정하기
- Fedora 설정: Fedora Linux에서 개발용 Discourse 설정하기
코드 & 내부 구조
- Ember 컴포넌트: Discourse에 Ember 컴포넌트 추가하기
- UI 키트: 공유된 Discourse 컴포넌트, 헬퍼 및 수정자 UI 키트
- 린트 및 포맷: 커밋 전 코드 자동 린트 및 포맷 처리
- 인수 테스트: Discourse의 Ember 코드에 대한 인수 테스트 및 컴포넌트 테스트 작성하기
- 테스트 스위트 실행: Discourse 코어, 플러그인 및 테마 QUnit 테스트 스위트 실행 방법
- 버전 호환성: 구버전 Discourse 설치용 플러그인 및 테마 버전 고정 (d-compat 브랜치)
- Ember 객체 소유권: Ember 객체 소유권 (getOwner, 서비스 주입 등)
- JS 성능: Google의 'tachometer’를 사용하여 Discourse의 JS 성능 변화 측정하기
- GitHub Actions를 이용한 CI: GitHub Actions를 사용하여 지속적 통합(CI) 설정하기
- 마크다운 확장: 마크다운 확장 개발자 가이드
- 모달 변환: 레거시 컨트롤러에서 새로운 DModal 컴포넌트 API로 모달 변환하기
- DModal API: DModal API를 사용하여 Discourse에서 모달 창(팝업/대화상자) 렌더링하기
- JS API: JS API 사용법
- 플러그인 아웃렛 커넥터: 테마 또는 플러그인에서 플러그인 아웃렛 커넥터 사용하기
- modifyClass: modifyClass를 사용하여 코어 동작 변경하기
- 라우트 생성: Discourse에서 라우트 생성 및 데이터 표시하기
- 인증 방법: Discourse에 새로운 ‘관리형’ 인증 방법 추가하기
- ActiveRecord 모델의 우발적 직렬화: ActiveRecord 모델의 우발적 직렬화 방지하기
- 템플릿 오버라이딩: (권장되지 않음) 테마 또는 플러그인에서 Discourse 템플릿 오버라이딩하기
- 서비스 객체: Discourse에서 서비스 객체 사용하기
- 시스템 스펙: Discourse 사용자 인터페이스에 대한 엔드투엔드 시스템 스펙 작성하기
- FormKit: 양식을 렌더링하기 위한 Discourse 툴킷.
- AppEvents 트리거: AppEvents 트리거 참조
- 트랜스포머: 트랜스포머를 사용하여 클라이언트 측 값 및 동작 커스터마이징하기
- 토픽 목록 커스터마이징: 토픽 목록 커스터마이징
- CSS 가이드라인: BEM을 사용한 CSS 클래스 가이드라인
- JS 타입 힌팅 & 검증: JavaScript 타입 힌팅 & 검증 (typescript)
- 디바이스 대상 디자인: 서로 다른 디바이스(터치 및 호버)를 위한 디자인
- 반응형 너비 대상 디자인: 반응형 너비(브레이크포인트, 뷰포트 및 컨테이너)를 위한 디자인
- 제스처 프리미티브: 드래그, 리사이즈 및 제스처 프리미티브
플러그인
- 기본 플러그인: Discourse 플러그인 개발 - 1부 - 기본 플러그인 만들기
- 플러그인 아웃렛: Discourse 플러그인 개발 - 2부 - 플러그인 아웃렛에 연결하기
- 사이트 설정: Discourse 플러그인 개발 - 3부 - 사용자 정의 사이트 설정 추가하기
- Git 설정: Discourse 플러그인 개발 - 4부 - git 설정하기
- 관리자 인터페이스: Discourse 플러그인 개발 - 5부 - 관리자 인터페이스 추가하기
- 인수 테스트: Discourse 플러그인 개발 - 6부 - 인수 테스트 추가하기
- 플러그인 공개: Discourse 플러그인 개발 - 7부 - 플러그인 공개하기
- 새로운 로케일: 플러그인에서 새로운 로케일 추가하기
- 채팅 통합: discourse-chat-integration에 새로운 프로바이더 추가하기
- markdown-it 확장: markdown-it 확장을 Discourse 플러그인으로 재포장하기
- Rails 자동 로딩: Rails 자동 로딩을 위한 플러그인 구조화하기
테마 & 구성 요소
- 테마 개발: Discourse 테마 및 테마 구성 요소 개발
- 빠른 참조: 테마 개발자 빠른 참조 가이드
- 디자이너 가이드: Discourse에서 테마를 시작하기 위한 디자이너 가이드
- Theme Creator: Theme Creator 및 Theme CLI로 시작하기
- Theme CLI: 테마 빌드를 돕는 Discourse Theme CLI 콘솔 앱 설치하기
- 테마 구조: 테마 및 테마 구성 요소의 구조
- 여러 JS 파일: 테마 JavaScript를 여러 파일로 분리하기
- 여러 SCSS 파일: 테마 SCSS를 여러 파일로 분리하기
- 테마 설정: Discourse 테마에 설정 추가하기
- 테마 설정용 객체: 테마 설정의 Objects 타입
- 설정 마이그레이션: Discourse 테마 설정 마이그레이션
- 테마 메타데이터: 테마에 메타데이터 및 스크린샷 추가하기
- 코어 변수: 테마에서 Discourse 코어 변수 사용하기
- 로케일화 가능한 문자열: 테마 및 테마 구성 요소에 로케일화 가능한 문자열 추가하기
- E2E 테스트: 테마 및 테마 구성 요소에 대한 엔드투엔드 시스템 테스트
- 유지보수 최소화: 테마 커스터마이징의 유지보수 최소화
- 글꼴 크기: 테마에서 글꼴 크기 변경하기
- 자산 포함: 테마 및 구성 요소에 자산(예: 이미지, 글꼴) 포함하기
- 사용자 정의 아이콘: 테마에서 Discourse의 기본 SVG 아이콘을 사용자 정의 아이콘으로 교체하기
- 다크 모드: 테마 및 플러그인을 자동 다크 모드 지원하도록 업데이트하기
- 테마 수정자: 테마 수정자: 간략한 소개
- 의사 요소: CSS 의사 요소를 사용하여 사이트의 어디에나 텍스트 또는 이미지 삽입하기
- 글꼴 구성 요소: 글꼴 테마 구성 요소 생성 및 공유
- Highlight.JS 언어: 테마 구성 요소를 통해 Highlight.JS에 새로운 언어 설치하기
- 홈페이지 콘텐츠: 홈페이지에만 표시되는 사용자 정의 콘텐츠 추가하기
- 메시지 형식: 로케일화를 위한 Message Format 지원
- 전역 아이콘 변경: 아이콘을 전역으로 변경하기
- 대체 아이콘: 대체 아이콘
- 위키 게시물 스타일: 위키 게시물 스타일 변경하기
- 색상 스킴: 색상 스킴 생성 및 공유
- 내비게이션 메뉴:
navigation_menu쿼리 매개변수를 사용하여 사이드바 또는 다른 옵션 미리보기 - 게시물 콘텐츠 스타일: 사용자 정의 스타일로 게시물 콘텐츠 커스터마이징하기
- 테마 스크린샷: Discourse 테마에 미리보기 스크린샷 추가하기
- 테마화 가능한 사이트 설정: 테마를 사용하여 사이트 설정 제어하기
일반 가이드
- 모바일 앱 화이트라벨링: Discourse 모바일 앱 화이트라벨링 결정 전 고려 사항
- 사용자 정의 자동화: 사용자 정의 Automations 만들기
- 공개 데이터 덤프: Discourse 공개 데이터 덤프
- AI 평가: Discourse AI 평가 실행하기
테마 개발 튜토리얼
- 1 - 소개: 테마 개발자 튜토리얼: 1. 소개
- 2 - 원격 테마: 테마 개발자 튜토리얼: 2. 원격 테마 만들기
- 3 - CSS: 테마 개발자 튜토리얼: 3. 테마에서 CSS
- 4 - 아웃렛: 테마 개발자 튜토리얼: 4. 아웃렛을 사용하여 콘텐츠 삽입 및 교체
- 5 - 구성 요소: 테마 개발자 튜토리얼: 5. 구성 요소 빌드 및 사용
- 6 - JS API: 테마 개발자 튜토리얼: 6. JS API 사용
- 7 - 결론: 테마 개발자 튜토리얼: 7. 마무리