pnpm과 패키지 기반 monorepo


문제.
과거에 나는 자바스크립트/TypeScript 라이브러리 Monorepos를 관리하는 몇 가지 방법을 시도해 봤다. lerna, yarn workspaces 등이다.
지금 내 뜻을 오해하지 마라. 이것들은 모두 훌륭한 도구들이다. 나는 그들의 작가가 이 도구들에 노력한 것에 매우 감사한다.
근데 자꾸 도박처럼 느껴져요.나는 지금까지 내가 정말로 발생하고 있는 일을 통제할 수 있다는 것을 느낀 적이 없다. (많은 흑마법이 있다). 나는 그들이 약간...깨지기 쉽다.

솔루션?
나는 pnpm Parcel를 동시에 시도하고 싶다.나는 이 두 가지 공구의 장점을 들은 적이 있는데, 최근에 그것들의 더욱 성숙한 경쟁 상대에 대해 갈수록 실망하고 있다.
내가 그들 각자의 문서 페이지를 보았을 때, 보기에 그들은 모두 좋은monorepo 지원을 가지고 있는 것 같다.저는'npm 라이브러리 구축'(building a npm library)-monorepo를 호환하는 해결 방안을 장기적으로 찾고 있기 때문에 현재 제가 보고 있는 것보다 개발 체험이 좋아서 한번 해 보려고 합니다.

저장소
그래서 저는 새로운 monorepo 설정을 시도하기 위해 테스트 저장소를 구축(그리고 기록)했습니다.

pklaschka / pnpm-parcel-monorepo-test
JS/TS npm 라이브러리 monorepo 설정을 시도하는 저장소로, pnpm을 패키지 관리자로 사용하고parcel을 구축 도구로 사용합니다.pnpmparcel 단일 재구매 테스트
패키지 관리자pnpm와 구축 도구로 사용할 JS/TS npm 라이브러리 monorepo 설정의 저장소입니다.
발전 선결 조건:
  • Node v16+
  • pnpm
  • 기술 스택
    본고는 monorepo 기술 체계에서 가장 중요한 구성 부분을 개술하였다

  • pnpm - 소프트웨어 패키지와monorepo 작업구역 관리자

  • Parcel-빌드 도구

  • Jest/ parcel -단원 테스트 프레임워크

  • TypeScript / ts-jest -유형 스크립트 유형 검사

  • TypeScript ESLint-가죽면

  • Prettier-코드 포맷 프로그램

  • fliegdoc-문서 생성기

  • GitHub Actions-CI 파이프

  • Renovate-종속성 업데이트 관리
  • 사용법
    발전 환경을 조성하다.
    종속성 설치:
    pnpm 설치
  • 자동 작업공간 반복 실행, 참조https://pnpm.io/cli/install
  • 별칭: tsc
  • pnpm i - 동일: npm ci(CI 환경에서 True 자동 적용)
  • 의존 항목의 모든 내용이 유행이 지났을 때 pnpm i --frozen-lockfile 를 실행해서 복구할 수도 있습니다.
    관리에 의존하다
    설치...
    View on GitHub
    저장소에는 다음과 같은 완전한 기술 스택이 포함된 테스트 설정이 있습니다.
  • 타자 원고
  • 에스린트
  • 이 더 예뻐요

  • (자체 제작 문서 생성기)
  • 농담/농담
  • GitHub 운영
  • 나는 pnpm install에서 대부분의 내용을 묘사했지만, 나는 더 많은 세부 사항을 설명하기 위해 추가 public Notion page를 만들었다.

    결실
    나는 그것의 작업 원리에 대해 매우 만족한다. 장래에 틀림없이 이런 방법을 사용할 것이다.앞으로 나는 기존의 MonoRepo를 이런 방법으로 옮길 수도 있다.

    우세하다
  • 🟢 당신은 자신이 통제했다고 느낀다README.md. 그들의 작업구역 시스템이 어떻게 일을 하는지 이해하는 것이 매우 간단하기 때문에 당신은 자신이 통제했다고 느낀다. 문제의 해결 방법을 추측할 필요가 없다.🎉. 예를 들어, pnpm 모든 컨텐트를 설정합니다.예전에는 내가 지금 뛰어야 하는지pnpm install,npm install,아니면 다른 것인지 항상 확실하지 않았다.
  • 🟢 빠른 구축 시간lerna bootstrapbuilds all the packages at once(한 번에 하나의 패키지를 실행하는 구축 스크립트가 아닌) 이후 구축 시간(특히 캐시가 준비된 상황에서)이 매우 빠르다
  • 🟢 개발parcel 경험이 있어 빠른 개발 가능
  • 🟢 "작업공간/여러 소프트웨어 패키지를 사용하는""기본""작업공간은""기본""parcel watch입니다(경쟁업체에 비해 불행하게도""해커 측 기능""과 비슷합니다.)"명령은 내가 원하는 방식으로 일하고 가방 간의'내부'의존 관계automatically get hydrated with version numbers on publish 등이다.

  • 결점
    물론 모든 방법에는 결점이 있다.다음은 내가 지금까지 발견한 것이다.
  • 🟡 적은 수의 생태계 지원pnpmpnpm은 99%의 경우 효과가 좋지만 도구는 일반적으로 parcelyarn처럼 이러한 지원에 대한 테스트를 하지 않는다.
  • 🟢 (신뢰할 수 없는 기술 지원) 본문을 작성할 때 GitHub의 신뢰할 수 있는 기술은 지원하지 않는다webpack.고맙습니다. Renovate 잘 돌아가고 있는 것 같습니다.
  • 🟢 (게시 자동화 도구 제외)pnpm에는 위대한 변경 로그/일반 제출/...게시 자동화 도구 기반.불행하게도, 나는 유사한 일을 할 수 있는 좋은 해결 방안을 아직 찾지 못했다.무슨 건의가 있습니까?

  • 소포 오류의 빠른 복구가 나로 하여금 거의 그것을 소홀히 하게 했다
    내가 처음 소포를 테스트했을 때, 그것은 불안정함을 느꼈다.그것은 닫히지 않고, 때때로 나를 덮어씌울 것이다. lerna 단지 전체적으로 조금도 좋지 않다.
    내가 this issue on GitHub를 발견했을 때, 나는 거의 포기하려고 했다.사실이 증명하듯이, 나는 pnpm 파일 트리의 더 높은 위치에 있었다. (아마도 내가 이전에 만든 백업일 것이다.)이로 인해 소포는 여러 가지 이상한 행동을 보였다.따라서 만약 이 방법을 시도하기로 결정하고 Parcel이 이상한 방식으로 '깜짝 놀랐다' 고 생각한다면, 파일 트리의 더 높은 층 검사 package.json, package-lock.json 또는 비슷한 파일을 검사할 가치가 있을 것입니다.
    그래서 전반적으로 말하면 이것은 해결하기 쉽다.그러나 이것은 거의 나를 (이것은 일종의 치욕이 될 것이다!)소포를 떠나서 이 쪽지를 여기에 놓고 싶습니다.

    자세한 내용
    그 밖에 제가 알고 있는 환매 절차/환매가 Notion Page에서 어떻게 구조적으로 진행되는지에 대한 모든 정보를 기록했습니다.이 monorepo 설정을 시도하기로 결정하면, 이것은 당신이 알아야 할 모든 명령, 각종 중요한 자원을 가리키는 링크 등을 포함하기 때문에 유용할 수 있습니다.

    작자
    .ltag__user__id__534789.작업 따르기 버튼
    배경색: #2D4E64!중요
    색상: #fffff!중요
    경계 색상: #2D4E64!중요
    }
    pklaschka image

    Pablo Klaschka (they/them)따라가기
    Working Student, Creative Cloud Platform and Ecosystem Team @ Adobe; I do many things. Among them developing websites and plugins for Adobe products, primarily Adobe XD. Viva la Open-Source!

    좋은 웹페이지 즐겨찾기