pnpm 및 Lerna: 다중 팩 저장소에서 필터링

모든 사람이 Lerna을 들은 적이 있다. 그것은 "여러 개의 패키지를 사용하여 자바스크립트 프로젝트를 관리하는 도구"이다pnpm은 디스크 공간을 신속하고 절약하는 자바스크립트 패키지 관리자라는 것을 개발자가 들어본 적이 거의 없다.Lerna와 pnpm은 다중 패키지 메모리 라이브러리(MPR) 도구를 개선하려고 합니다.레나에게 있어서 이것은 창조의 원인이다.pnpm에 대한 MPR 지원은 recursive이라는 명령을 통해 이루어진 좋은 추가 기능이다.물론 Lerna가 멀티팩 환매를 관리하는 방식과 pnpm의 방식은 많이 다르다.본고에서 나는 간단해 보이는 부분인 필터를 비교하고 싶다.
MPR의 필터링은 매우 중요합니다. 왜냐하면 개발 과정에서 변경은 주로 한 개 또는 두 개의 패키지 내에서 진행되기 때문입니다.패키지가 몇 개만 수정되었다면 전체 저장소에서 명령을 실행하는 것은 의미가 없습니다.

Lerna에서 필터링


Lerna의 필터링(v3.2.1)은 다음 플래그를 통해 수행됩니다.
  • scope- 주어진 glob와 일치하는 패키지만 포함합니다.
  • include-filtered-dependents- --scope, --ignore 또는 --since과 상관없이 명령을 실행할 때 모든 전달 가능한 의존항을 포함한다.
  • include-filtered-dependencies- --scope, --ignore 또는 --since과 상관없이 명령을 실행할 때 전달할 수 있는 모든 의존항을 포함한다.
  • ignore - 주어진 glob와 일치하는 가방을 제외합니다.
  • private- 개인 패키지가 포함되어 있습니다.Pass - no private는 개인 패키지를 제외합니다.
  • since- 지정된 [ref] 이후 업데이트된 패키지만 포함됩니다.ref를 전달하지 않으면 기본적으로 가장 가까운 표시입니다.
  • 이 로고들은 Lerna의 필터를 매우 강하게 만든다.그러나, 그것들은 입력하기가 매우 어렵다.저장소를 다운로드한 경우 login-page 구성 요소에서만 작업할 수 있습니다.login-page과 그 어떠한 의존 항목의 설치를 실행하고자 합니다.
    lerna bootstrap --scope login-page --include-filtered-dependencies
    
    또는 site-header이라는 구성 요소를 변경하고 모든 종속 패키지에서 테스트를 실행하고자 할 수도 있습니다.
    lerna run test --scope site-header --include-filtered-dependents
    
    이 표지들은 입력이 어려울 뿐만 아니라 기억하기도 어렵고 헷갈리기 쉽다.

    pnpm에서 필터링


    Lerna와 달리 pnpm는 특수한 패키지 선택기 문법을 사용하여 명령을 제한합니다.따라서 팀장 로고 이름을 기억하기보다 기억하기 쉬운 선택기 문법만 기억하는 것이 낫다.2.15.0 버전부터 pnpm은 다음 선택기를 지원합니다.
  • <pattern> - 지정된 패턴과 일치하는 패키지 이름으로 범위를 제한합니다.E、 g.:foo@bar/*
  • <pattern>...- 일치하는 패키지의 모든 직간접적 의존항을 포함합니다.E、 g.:foo...
  • ...<pattern>-가방에 일치하는 모든 직간접적인 양육자를 포함한다.E、 g.:...foo...@bar/*
  • ./<directory>-정자 디렉터리에 있는 모든 가방을 포함합니다.E、 g.:./components
  • .- 현재 작업 디렉토리에 있는 모든 패키지를 포함합니다.
  • 이 필터들은 --filter 로고를 통해 지정할 수도 있고, 명령이 끝날 때의 -- 이후에 지정할 수도 있다.

    Note: as of v2.15.0, filters after -- are not supported by run, exec, test


    따라서 login-page과 모든 의존 항목을 유도하려면 pnpm를 사용하여 다음과 같이 하십시오.
    pnpm recursive install -- login-page...
    
    site-header 및 모든 종속 항목에 대한 테스트를 실행하려면 ...<pattern> 선택기를 사용합니다.
    pnpm recursive test --filter ...site-header
    
    물론 필요에 따라 여러 개의 선택기를 조합할 수 있습니다.
    pnpm recursive update -- ...site-header login-page... ./utils @style/*
    
    위의 명령 업데이트의 종속성:
  • site-header
  • site-header의 부양인
  • login-page
  • login-page의 의존항
  • 디렉터리 utils에 있는 모든 소프트웨어 패키지
  • @style 범위내 모든 가방
  • pnpm은 아직 Lerna가 제공하는 모든 기능이 없을 수도 있지만, 많은 사용자들에게 충분할 수도 있습니다.
    만약 pnpm를 아직 들어보지 못했다면, 당신도 Flat node_modules is not the only way을 읽으시기 바랍니다. 그 중에서 pnpm가 만든 독특한 node_모듈 구조를 설명했습니다.

    메모장


    Lerna v3.2
    pnpm v2.15
    - 범위 내 구성 요소
    -- 내 구성 요소
    - 범위 도구 모음 -*
    -- 도구 모음 -*
    - 내 구성 요소 범위 - 필터링된 종속 항목 포함
    - 내 구성 요소...
    - 역할 영역 내 구성 요소 - 필터링된 종속 포함
    -- ...내 구성 요소
    최초 발표 pnpm blog

    좋은 웹페이지 즐겨찾기