사용자 정의 스크립트에서 Nx 종속성 다이어그램 사용

6972 단어 reacttoolingnxangular
이 글은 최초로 https://juristr.com/blog/2020/09/use-nx-dep-graph-in-custom-scripts에 발표되었다.자세한 내용은 juristr.com/blog를 참조하십시오.
개원Nx monorepo toolkit의 강력한 지주 중 하나는 의존 관계도이다.본문에서 우리는 자신의 각본에서 그것을 어떻게 활용하는지 연구할 것이다.
Nxmonorepos를 통해 개발을 확장하는 데 도움을 줄 수 있는 소스 개발 도구 패키지입니다.Nx를 돋보이게 하는 건요.

  • 종속성 다이어그램 - Nx 작업공간 파악

  • "affected" commands - 진정으로 바뀐 것만 구축할 수 있음

  • computational caching - 빅토르 사프킨은 "How to never build or test twice"에 블로그를 한 편 썼다.

  • 그것은 기술과 무관하다. 비록 Nx는 현재 자바스크립트 생태계에 주목하고 있지만, Nx에는 그것과 특별히 관련된 것이 없다.따라서 자바나 자바라도Net 프로젝트를 구축할 수 있음
  • 본문에서 나는 의존 관계도에 특히 관심을 가지고 싶다.막후에서, 작업 영역에서 라이브러리를 인용할 때마다, Nx는 라이브러리를 추적합니다.Monorepo의 구조를 이해함으로써 Nx는 개발자의 체험을 현저하게 개선할 수 있다.그 중 하나는 이른바 영향을 받는 명령이다.예를 들어, 테스트를 실행하려면 다음과 같이 하십시오.
    $ nx affected:test
    
    또는
    $ nx affected:build
    
    응용 프로그램과 라이브러리 구축을 실행합니다.영향을 받은 명령은test/build/만 실행됩니다.변경된 응용 프로그램과 라이브러리에 있습니다.이러한 명령은 CI 파이프의 시간을 크게 단축하는 데 도움이 될 것이라고 상상할 수 있습니다.자세히 보기about it on the Nx docs.
    흥미로운 것은 도형도 운행을 통해
    $ nx dep-graph
    
    또는 실행affected:dep-graph을 통해 영향을 받은 노드만 표시합니다.
    간단한 영상이 있는데 dep 도형의 가시화를 안내합니다

    코드에서 프로젝트 맵에 접근
    Nx에는 내장된 자동화 시스템이 포함되어 있습니다.그러나 모든 작업 공간은 유일무이하기 때문에 자신의 수요에 따라 맞춤형 제작을 해야 한다.맞춤형 자동화 스크립트도 의존 관계도를 이용할 수 있다.이 점을 해낼 수 있는 몇 가지 방법이 있다.

    방법 1: TypeScript에서
    TypeScript 파일에서는 다음과 같이 dep 그림의 노드를 사용할 수 있습니다.
    import { createProjectGraph } from '@nrwl/workspace/src/core/project-graph';
    
    const graph = createProjectGraph();
    
    가져오는 것은 core/project-graph 파일에서 함수를 가져오는 깊이입니다.이는 공용 API의 일부가 아니므로 변경될 수 있습니다.이 점에 주의하세요.

    메서드 2: JSON으로 내보내기
    도면을 JSON 파일로 내보낼 수도 있습니다.
    nx dep-graph --file=testgraph.json
    
    다른 프로그램으로 다시 가져올 필요가 있다면, 이 점이 특히 유용하다.

    방법 3: 인쇄에 영향
    만약 Nx 문서의 the distributed CI setup를 보면, 여기에 Azure 설치의 예가 하나 있는데, 이것은 의존 관계도를 사용하여 영향을 받는 노드를 계산한 다음에 그에 상응하여 구축을 나누어 주는 것이다.
    이것은 이 노드의 발췌문이다.js 스크립트:
    const execSync = require('child_process').execSync;
    
    const array = JSON.parse(
        execSync(`npx nx print-affected --base=${baseSha}`)
          .toString()
          .trim()
      ).tasks.map((t) => t.target.project);
    

    방법 4: 영향 받는 응용 프로그램 및 라이브러리 인쇄
    위에서 언급한 방법3은 생성된 JSON 출력을 필터하고 조작할 수 있기 때문에 매우 유연성을 제공합니다.
    대신 affected:appsaffected:libs도 사용할 수 있습니다.특히 —-plain 로고를 통과할 때, 빈칸으로 구분된 응용 프로그램/라이브러리 목록을 보여 줍니다. 사용자 정의 스크립트에서 다시 해석할 수 있습니다.
    $ nx affected:apps —-base=master —-plain
    
    추가 정보found on the Nx docs.

    어디서 사용해요?
    Nx monorepo에는 두 가지 주요 사용 사례가 있습니다.

  • Workspace schematics-schematics는'생성기'의 독특한 단어로 TypeScript로 스크립트를 작성할 수 있으며 작업 영역에서 코드를 만들거나 업데이트하거나 삭제할 수 있다.Nx 자체에는 기본 제공되는 원리도가 있습니다.작업 영역 설명도는monorepo
  • 에서 특별 설명도를 만들 수 있도록 합니다

  • 사용자 정의 스크립트 - 이 스크립트들은 보통 Nxrepo tools 폴더에 놓여 있으며 셸 스크립트, 노드가 될 수 있습니다.js 스크립트나 당신이 좋아하는 것들

  • CI 설정 최적화 - 여러 노드를 병렬화distributed builds합니다.

  • 결론
    우리는 Nx 의존 관계도를 간략하게 소개했는데, 그것이 어떻게 작동하는지, 특히 자신의 코드에서 그것을 어떻게 활용하는지.

    좋은 웹페이지 즐겨찾기