테마에서 <script type='text/discourse-plugin> 또는 <script type='text/x-handlebars'> 사용은 이제 비추천(deprecated)됩니다. 테마에서 이러한 태그를 사용하는 경우 아래 지침에 따라 업데이트해야 합니다.
일반적인 <script> 및 <script type='text/javascript'>는 이 변경 사항의 영향을 받지 않습니다.
타임라인
이는 대략적인 추정치이며 변경될 수 있습니다
-
2025년 5월 - 콘솔 비추천 메시지 활성화
-
2025년 7월 - 관리자 경고 배너 활성화
-
2025년 9월 말2026년 3월 - 기능 제거
<script type='text/x-handlebars'> 변환
이 방법을 통해 도입된 템플릿은 전용 .hbs 파일로 이동하거나 gjs 파일로 리팩토링해야 합니다.
HBS로 유지하려면, 커넥터 템플릿은 다음 위치에 배치할 수 있습니다:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
그리고 컴포넌트 템플릿은 다음 위치에 배치할 수 있습니다:
{theme}/javascripts/discourse/components/{component-name}.hbs
2026년 3월 이후
.hbs파일도 비추천 대상이 됩니다. 이 변환을 완료한 후에는 Deprecating .hbs file extension in themes and plugins 의 지침으로 진행하세요.
최신 .gjs 형식으로 커넥터와 컴포넌트를 빌드하려면 테마 개발자 튜토리얼의 해당 장을 참고하세요:
<script type='text/discourse-plugin'> 변환
이 태그 내부의 코드는 전용 JavaScript 파일로 마이그레이션할 수 있습니다.
관리자 패널 인터페이스를 통해 테마를 개발하는 경우, <script>에서 코드를 복사하여 JS 탭(// your code here이라고 표시된 곳)으로 이동하세요.
로컬에서 테마를 개발하는 경우, 다음 위치에 새 파일을 생성하세요.
{theme}/javascripts/discourse/api-initializers/init-theme.js
그리고 아래 래퍼를 추가하고 표시된 위치에 코드를 배치하세요:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
스크립트 태그에서 다른 JS 모듈을 가져오는 유일한 방법은 require() 구문을 사용하는 것이었습니다. .js 파일에서는 여전히 작동하지만 곧 비추천 대상이 되므로, 이제 현대적인 ES6 import로 변환하는 것이 좋습니다. 예를 들어:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
JS 초기화자에 대한 자세한 정보는 다음을 참조하세요:


