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 사용자 인터페이스를 위한 끝ToEnd 시스템 스펙 작성
- 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 테스트: 테마 및 테마 구성 요소를 위한 끝ToEnd 시스템 테스트
- 유지보수 최소화: 테마 사용자 정의의 유지보수 최소화
- 글꼴 크기: 테마에서 글꼴 크기 변경
- 자산 포함: 테마 및 구성 요소에 자산(예: 이미지, 글꼴) 포함
- 사용자 정의 아이콘: 테마에서 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. 마무리