로컬 패키지 연결
로컬 패키지 연결 (Linking in Local Packages)
핵심 Backstage 저장소에서 변경을 하고 그 변경을 Backstage 애플리케이션에서 테스트하려면 둘을 함께 연결해야 합니다.
출처: 문서
본문
왜? (Why?)
핵심 Backstage 저장소에서 변경을 하고 그 변경을 Backstage 애플리케이션에서 테스트하려면 둘을 함께 연결해야 합니다.
~/backstage // cloned from GitHub~/my-backstage-application // generated using npx
예를 들어 @backstage/core-plugin-api를 수정하고 회사의 Backstage 인스턴스에서 시험해 보고 싶을 수 있습니다.
외부 워크스페이스 연결 (External workspace linking)
info
워크스페이스 연결은 실험적 기능이며 모든 경우에 작동하지 않을 수 있습니다.
모든 패키지의 로컬 개발에 사용되는 backstage-cli package start 명령은 단일 외부 워크스페이스를 현재 워크스페이스에 연결하는 데 사용할 수 있는 --link 플래그를 지원합니다. 모듈 해석에 연결되어 연결된 워크스페이스의 패키지에 대한 모든 임포트를 그쪽에서 가져오도록 재정의합니다. 유일한 예외는 react와 react-dom 패키지로, 항상 대상 패키지에서 해석됩니다.
외부 워크스페이스를 연결할 때 두 워크스페이스 모두에 의존성이 설치되고 최신 상태인지, 그리고 두 워크스페이스의 react와 react-dom 버전이 동일한지 확인하세요.
위 예시의 my-backstage-application 워크스페이스 내 packages/app 폴더에 있다면 다음 명령으로 backstage 워크스페이스를 연결할 수 있습니다.
yarn start --link ../../../backstage
--link 옵션에 제공된 경로는 상대 또는 절대 경로일 수 있으며 외부 워크스페이스의 루트를 가리켜야 합니다.
start 명령이 실행되어 브라우저에서 프런트엔드 앱의 개발 버전을 서빙하는 동안 두 워크스페이스 모두에 변경을 하고 브라우저에 변경 사항이 반영되는 것을 볼 수 있습니다.
정확히 동일한 과정으로 백엔드 패키지도 연결할 수 있습니다. 같은 --link <workspace-path> 옵션으로 백엔드 패키지를 시작하기만 하면 됩니다.
일반적인 문제 (Common Problems)
React 오류 (React errors)
React 관련 오류가 발생한다면 두 워크스페이스의 React 버전이 다른 것일 가능성이 높습니다. 두 워크스페이스의 react와 react-dom 버전이 동일한지, 또는 최소한 앱을 서빙하는 패키지와 외부 워크스페이스 사이에서 동기화되어 있는지 확인하세요.
임시 패치 생성 (Generating temporary patches)
info
이 기능은 실험적이며 현재 Yarn 워크스페이스만 지원합니다.
외부 워크스페이스의 패키지에 로컬 변경을 한 후에는 종종 이러한 변경을 자체 프로젝트에서 병합하고 배포하고 싶을 것입니다. 이를 위해 Yarn 패치를 사용할 수 있지만, 이러한 패치를 수동으로 만드는 것은 꽤 번거로울 수 있습니다. 이 과정을 더 쉽게 하기 위해 @backstage/repo-tools 패키지의 yarn backstage-repo-tools generate-patch 명령을 사용해 외부 워크스페이스에 패치와 해석 항목을 생성할 수 있습니다.
예를 들어 기본 backstage 저장소의 로컬 클론에서 @backstage/backend-app-api 패키지에 변경을 했다면, 내부 프로젝트용 패치를 다음과 같이 생성할 수 있습니다.
클론된 backstage 저장소에서 실행
yarn backstage-repo-tools generate-patch @backstage/backend-app-api --target ../our-developer-portal
이것은 our-developer-portal 워크스페이스에 패치 파일을 생성합니다. 패치는 소스 패키지의 가장 최근에 릴리스된 버전을 기반으로 하며 그 위에 추가 변경이 있습니다.
패치를 소스 패키지의 다른 버전에 기반으로 하려면 --base-version <version> 옵션으로 버전을 지정할 수 있고, 특정 버전 쿼리에만 패치를 사용하려면 --query <query> 옵션으로 쿼리를 지정할 수 있습니다.