모든 플러그인과 테마(컴포넌트)에 외부 JS 라이브러리를 전역으로 추가하기

상황

우리 Discourse 인스턴스에 이 외부 로깅 JS 라이브러리를 추가하여, log.setLevel('debug')와 같이 로그 레벨을 설정할 수 있는 이 가벼운 로깅 래퍼를 활용해서 디버깅 워크플로우를 개선하고자 합니다.

이 외부 라이브러리는 우리 앱에 설치된 모든 커스텀 플러그인, 테마 및 테마 컴포넌트에서 사용 가능해야 합니다.

구현

• 여러 플러그인에서 register_asset를 통해 JS를 가져오면 JS 파일이 여러 번 가져와지나요?
• Ember가 console.log를 선호하도록 로깅 유틸리티를 비추천(deprecated) 처리한 이후, 유사한 기능을 가진 대체 JS 라이브러리가 있나요?

현재 우리는 다음과 같은 경로를 통해 구현을 진행했습니다.

  1. 외부 JS를 가져오는 플러그인을 설치하고, JS 라이브러리를 window 객체(window.log = log)를 통해 사용 가능하게 만듦
    • JS 라이브러리가 이미 가져와진 경우에만 가져오기
    • 다른 플러그인/테마/테마 컴포넌트는 해당 플러그인에 의존하게 되며, 오픈 소스 플러그인 같은 경우 사용자가 두 플러그인을 모두 설치하도록 강제됨

이 접근 방식이 타당하다고 보시나요, 아니면 다른 방식을 제안하시겠어요?

저한테는 이게 아주 분리된 구조로 느껴지는데… 이걸 도입하는 독립형 플러그인이나 컴포넌트를 만들고, 항상 설치되도록 하면 안 될까요?

네, 실제로 우리가 현재 사용하고 있는 솔루션이 바로 그것입니다. JS를 가져오는 플러그인 하나를 두고, 이를 사용하는 다른 플러그인들은 해당 플러그인이 설치되어 있어야 의존 관계를 충족합니다.

답변 주셔서 감사합니다!