본문 바로가기
개발개발/Date-project

[date] pnpm-workspace.yaml 설정하기

by yelimu 2025. 3. 6.
  • eslint config ✅
  • tsconfig 설정  
  • pnpm-workspace.yaml ➡️
  • package.json의 script 설정
  • turbo.json 셋업

.yaml 확장자는 이전에 GitHub action으로 빌드 에러 검사하고, 스토리북 크로매틱으로 배포할때 workflow? 설정할때 본 적이 있다.

 

YAML 이란 뭘까?

  • 'YAML'은 'YAML은 마크업 언어가 아니다(YAML Ain't Markup Language)' 또는 '또 다른 마크업 언어(Yet Another Markup Language)'의 약어
  • 사람이 쉽게 이해할 수 있는 데이터 직렬화 언어
  • 구성(config) 파일과 서로 다른 시스템 간의 데이터 교환을 비롯한 다양한 애플리케이션에 특히 적합.
    간단하고 직관적인 구조로 다양한 도메인에서 사용성이 향상되어 사용자가 명확하고 이해하기 쉬운 방식으로 데이터를 정의하고 구성할 수 있다.  
  • 확장자 : .yaml 또는 .yml
  • 특징 
    1) 모든 YAML 파일의 데이터는 key-value 쌍의 형식을 따른다. 
    2) YAML은 대소문자를 구분하며, key는 중복되지 말아야 한다. (unique)

pnpm으로 프로젝트를 만들면 루트에 pnpm-workspace.yaml이 생성된다.

이 파일의 역할은

1) pnpm을 사용하는 monorepo의 구조를 정의하고, 2) 종속성을 효율적으로 관리하며, 3) 어떤 패키지가 포함되고 제외될지 설정

하는 것 이라고 한다 ^.^

packages:
  - "apps/*"
  - "packages/*"

위 코드에 의해, apps와 packages 폴더 하위의 모든 파일이 workspace로 정의된다.

이 외에 추가할 디렉토리는 없는거같아서 우선 유지해야겠다.

 

turborepo GitHub 에서는 아래와 같이 작성되어있다. 

packages:
  - ".github/actions/*"
  - "cli"
  - "docs"
  - "packages/*"
  - "turborepo-tests/*"
  # Intentionally exclude the npm turbo package from the workspaces.
  - "!packages/turbo"
  - "crates/*/js"
  - examples
  # Exclude the non-monorepo example as it should be treated as independent of this repo
  - "!examples/non-monorepo"