Angular CLI에서 Nx로 마이그레이션하는 이유 및 방법
주: 비밀 협정 때문에 우리는 고객의 이름을 언급하지 않을 것입니다.
우리는 작년에 Angular CLI에서 Nx로의 마이그레이션을 마쳤는데, 이것은 우리가 한 가장 큰 재편 중의 하나이다.이 글은 우리가 왜 이렇게 하기로 결정했는지, 그리고 우리가 무엇을 했는지 소개할 것이다.
우리의 도전
우리 왜 이러는지
Angular CLI에서 Nx로 마이그레이션하는 것은 중요한 결정입니다.Nx로 마이그레이션하기 전에 Angular CLI를 사용하여 기본 애플리케이션에 프로젝트를 만들고 동일한 작업공간에 작은 독립 실행형 애플리케이션을 만들었습니다.그것은 마치 하나의 코드 라이브러리에 있는 거대한 코드 블록과 같아서, 우리는 이전할 때 많은 도전에 부딪혔다. 만약 우리가 Nx로 이전하지 않았다면 더욱 그렇다.
내가 팀에 가입했을 때 응용 프로그램의 성능 문제를 해결하기로 결정했기 때문에 우리는 곧 대량의 코드 재구성을 진행할 것이다.
Nx 소개
Nx는 모노 리콜 관리를 위한 개발 도구다.사용mono-repos 의 장점은 한 작업공간에서 여러 개의 응용 프로그램을 만들고 관리하며/share 라이브러리를 유지보수할 수 있다는 것입니다.
Nx가 한 것은 단일 환매만이 아니다.생성기와 구축기/실행기 (사용자 정의 명령) 를 작성하기 위해 devkit에 접근할 수 있습니다.
Nx는 또한 구축에 캐시를 제공하기 때문에 구축을 실행할 때마다 변경되지 않은 코드를 컴파일할 필요가 없습니다.만약 당신이 CI 파이프라인에서 캐시 우위를 얻고 싶다면, Nx Cloud는 아주 좋은 제품입니다.
우리가 시작하기 전의 걱정
이전을 시작하기 전에 프로그램에서 이동하고 라이브러리로 만들어야 할 코드 부분을 확인해야 합니다.
우리는 다음과 같은 조치를 취하기로 결정했다.
다음과 같은 옵션이 있습니다.
나는 과거에 부차적인 입구점을 사용한 적이 있다.나의 건의는 두 번째 입구점을 선택하는 것이다.
솔루션 1의 복잡성을 고려하여 우리는 다른 해결 방안을 채택하기로 결정했다
tsconfig.base.json
에서 와일드카드 경로를 사용하기로 결정했습니다."@domain/common-legacy/*": ["libs/common/legacy/src/lib/*"]
솔루션에 대해 아는 것이 거의 없음
전체 마이그레이션 프로세스를 세 부분으로 나누기로 했습니다.
초기 솔루션의 일부로 사용되는 솔루션
component/module/service/
등에 대한 폴더를 설정하여import { HomeModule } from '@domain-common-legacy/home.module'
최종 솔루션
최초의 해결 방안이 어떻게 작동하는지 알게 되면, 코드 라이브러리를 훑어보고, 우리가 가지고 있는 모든 특성을 확인하고,lib로 나누기로 결정합니다.
세 가지 섹션을 포함하여 대부분의 기능을 파악했습니다.
라이브러리를 만들면요.
내가 언급한 바와 같이 LIB를 만드는 것은 전체 이동의 일부분일 뿐이다.이 연습에서는 주 번들로 대량의 상태 관리/NgRx 코드를 계산했습니다.
우리는 그것들을 분리해서 우리가 필요로 하는 상태를 주 코드의 일부분으로만 불러와서 이 문제를 병행 처리하기로 결정했다.
우리는 메인 패키지의 약 2.9MB에서 시작해서 evergreen 브라우저의 구축 중인 2.30MB까지 갔다.
루프 종속 처리
라이브러리를 만든 후에 우리는 최종적으로 180여 개의 라이브러리를 얻었다. 이것은 한 응용 프로그램에서 시작된 것이다.
지금은 순환 의존성 문제를 처리할 때다.한 번의 성공은 불가능하다.
따라서 우리는 핵심 라이브러리부터 시작하고 순환 의존성 문제를 담당하는 대형 코드 라이브러리는 핵심 라이브러리의 일부이며 주로 인터페이스/서비스와 상태임을 발견하기로 했다.
비록 우리가 저지른 오류를 복구하고 있지만, 우리는 순환 의존성 검사를 금지해 왔다.
새 코드에 대한 검사를 사용할 수 있음을 깨달았습니다. 루트 eslint config를 추가해서 전체 리포에 대한 검사를 사용하고 순환 의존성을 가진lib를 모두 비활성화합니다.이런 방식을 통해 현재 새로운 라이브러리는 순환 의존 문제가 없는 상황에서만 합병할 수 있다.
라이브러리에 순환 의존성 검사를 사용하기로 결정했습니다. 왜냐하면 라이브러리를 복구하고 있기 때문입니다.
순환 의존 복구는 더 많은 라이브러리를 만들어야 합니다. 마지막으로 250개가 넘는 라이브러리를 얻었습니다.
도서관을 건설하다
앞에서 언급한 바와 같이, 이런 방법의 하나는 우리가 이 라이브러리를 구축할 수 없다는 것이다.
우리 동료들은 이 일을 직접 처리하기로 결정했고, 최종적으로 구축기를 만들어서 이런 방법으로 만든 모든 새 라이브러리를 구축했다.
Matt는 라이브러리 생성기도 작성했기 때문에 같은 구조로 모든 라이브러리를 만듭니다. 그러면 전체 라이브러리를 패키지의 일부분으로 사용하지 않습니다.
우리가 이룩한 성과
이번 이주 후에 우리는
코드 소유자: 코드 소유자 파일을 만들고 코드 심사의 책임과 코드의 특정 부분을 어느 그룹에 귀속시키기로 결정했습니다.
결론
NX로의 마이그레이션 선택은 기능을 인식하고 라이브러리로 마이그레이션할 수 있는 효과적인 방법으로, 소규모 PRs의 이점을 제공합니다.그 밖에 우리는 사용되지 않고 중복된 코드도 식별할 수 있다.
사용자 정의 규칙과 코드 소유자를 추가하는 것은 우리에게 큰 도움이 된다.우리는 검사가 필요한 코드를 식별할 수 있다.
Nx로 이전한 경험과 그것이 어떻게 도움이 되는지 트위터에 공유해 주세요.
당신은 Nx 커뮤니티에 가입할 수 있습니다: https://go.nrwl.io/join-slack
그에게 귀중한 시간을 주어 이 문장을 읽어 주셔서 특히 감사합니다.사랑과 너의 일 주리.💙
Reference
이 문제에 관하여(Angular CLI에서 Nx로 마이그레이션하는 이유 및 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/this-is-angular/why-and-how-we-migrated-to-nx-from-angular-cli-5a61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Angular CLI에서 Nx로 마이그레이션하는 이유 및 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/this-is-angular/why-and-how-we-migrated-to-nx-from-angular-cli-5a61텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)