0Pricing
TypeScript Academy · 강의

TypeScript와 함께 사용하는 pnpm 작업 공간

pnpm과 공유 tsconfig로 모노레포를 구성합니다.

TypeScript와 함께 사용하는 pnpm 작업 공간은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

pnpm 워크스페이스란 무엇입니까

pnpm 워크스페이스를 사용하면 공유 node_modules 구조로 하나의 저장소에서 여러 패키지를 관리할 수 있어 디스크 사용량을 줄이고 패키지 간 가져오기를 사용할 수 있습니다.

# pnpm-workspace.yaml
packages:
  - "packages/*"
  - "apps/*"

워크스페이스 구조 만들기

일반적인 pnpm 모노레포에는 공유 라이브러리를 위한 packages/와 배포 가능한 애플리케이션을 위한 apps/가 있습니다.

monorepo/
├── pnpm-workspace.yaml
├── package.json          # root
├── packages/
│   ├── core/             # shared logic
│   └── ui/               # shared components
└── apps/
    └── web/              # Next.js app

루트 tsconfig.json

루트 tsconfig는 기본 옵션을 설정하고 모든 워크스페이스 패키지를 참조합니다.

{
  "compilerOptions": {
    "strict": true,
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler"
  },
  "references": [
    { "path": "packages/core" },
    { "path": "packages/ui" },
    { "path": "apps/web" }
  ]
}

패키지 수준 tsconfig

각 패키지는 루트 구성을 확장하고 자체 composite와 outDir를 설정합니다.

// packages/core/tsconfig.json
{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "composite": true,
    "outDir": "./dist",
    "rootDir": "./src"
  }
}

패키지 간 의존성 설치

워크스페이스 프로토콜과 함께 pnpm add를 사용하여 모노레포 내 패키지를 연결하십시오.

# Add @myapp/core to apps/web
pnpm add @myapp/core --workspace --filter apps/web

# package.json entry:
# "@myapp/core": "workspace:*"

TypeScript 경로 확인

루트 tsconfig에 paths 별칭을 추가하여 개발 중 TypeScript가 워크스페이스 패키지를 해당 소스로 확인하도록 하십시오.

{
  "compilerOptions": {
    "paths": {
      "@myapp/core": ["./packages/core/src/index.ts"],
      "@myapp/ui": ["./packages/ui/src/index.ts"]
    }
  }
}

모든 패키지 빌드하기

루트에서 tsc --build를 사용하여 모든 복합 패키지를 의존성 순서에 따라 빌드하십시오.

# Build all
tsc --build

# Or with pnpm recursive script:
pnpm -r build

패키지 전체에서 스크립트 실행하기

pnpm -r(재귀 실행) 또는 --filter를 사용하면 일치하는 모든 패키지에서 스크립트를 실행할 수 있습니다.

# Run tests in all packages
pnpm -r test

# Run only in packages/core
pnpm --filter @myapp/core test

공유 ESLint 및 Prettier 구성

린트 구성을 공유 패키지에 보관하고 각 패키지에서 확장하여 모노레포 전체에서 일관된 코드 스타일을 유지하십시오.

// packages/eslint-config/index.js
module.exports = { extends: ["airbnb-typescript"], ... };

Turborepo 통합

Turborepo를 추가하여 빌드/테스트/린트 작업을 캐시하고 병렬화하십시오. 의존성 순서에는 pnpm 워크스페이스 그래프를 사용합니다.

npx create-turbo@latest
# or add to existing monorepo:
pnpm add turbo -w

복습: TypeScript를 사용하는 pnpm 워크스페이스

pnpm 워크스페이스와 TypeScript 프로젝트 참조를 함께 사용하면 공유 node_modules, workspace:*를 통한 패키지 간 가져오기, tsc --build를 사용한 빠른 빌드를 갖춘 강력한 모노레포를 구성할 수 있습니다.

빠른 확인

pnpm 워크스페이스 패키지에 해당하는 디렉터리를 정의하는 파일은 무엇입니까?

학습 내용

TypeScript 프로젝트 참조를 사용하는 pnpm 워크스페이스는 공유 node_modules, 워크스페이스 프로토콜을 통한 패키지 간 연결, 증분 빌드를 갖춘 효율적인 모노레포를 제공합니다. 캐싱과 병렬화를 위해 Turborepo를 추가하십시오.

자주 묻는 질문

“TypeScript와 함께 사용하는 pnpm 작업 공간” 강의는 무료인가요?

네 — “TypeScript와 함께 사용하는 pnpm 작업 공간” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“TypeScript와 함께 사용하는 pnpm 작업 공간”에서 뭘 배우나요?

pnpm과 공유 tsconfig로 모노레포를 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“TypeScript와 함께 사용하는 pnpm 작업 공간” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. TypeScript 프로젝트 참조 이해하기
  2. TypeScript와 함께 사용하는 pnpm 작업 공간
  3. 공유 형식 패키지 전략
  4. 모노레포의 증분 빌드 및 캐시
← TypeScript Academy(으)로 돌아가기