0Pricing
React Academy · 강의

공유 라이브러리와 내부 패키지

공유 UI 및 유틸리티 라이브러리를 만들고 TypeScript 경로 별칭으로 여러 앱에서 가져옵니다.

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

공유 라이브러리를 사용하는 이유

여러 앱에 컴포넌트, 훅, 유틸리티를 중복해서 작성하는 대신 공유 라이브러리 프로젝트로 추출하면 모노레포의 모든 앱에서 사용할 수 있습니다.

라이브러리 생성

Nx 생성기를 사용하여 타입이 지정되고 빌드 가능한 라이브러리 프로젝트를 만드세요.

# UI component library:
npx nx generate @nx/react:library ui --directory=libs/ui --importPath=@myorg/ui

# Utility library:
npx nx generate @nx/js:library utils --directory=libs/utils --importPath=@myorg/utils

# Data access library (hooks, API calls):
npx nx generate @nx/react:library data-access --importPath=@myorg/data-access

라이브러리 공개 API

모든 항목을 하나의 index.ts(공개 API)에서 내보내세요. 사용하는 쪽에서는 깊은 내부 경로가 아니라 @myorg/ui에서만 가져와야 합니다.

// libs/ui/src/index.ts
export { Button } from './lib/Button';
export { Card } from './lib/Card';
export { Input } from './lib/Input';
export type { ButtonProps } from './lib/Button';

// Consumer in apps/web:
import { Button, Card } from '@myorg/ui';
// NOT: import { Button } from '@myorg/ui/src/lib/Button'; // internal path

라이브러리 유형: 게시 가능과 빌드 가능

빌드 가능 라이브러리는 모노레포를 더 빠르게 빌드할 수 있도록 증분 방식으로 컴파일됩니다. 게시 가능 라이브러리는 외부에서 사용할 수 있는 npm 호환 패키지도 생성합니다.

# Buildable (monorepo internal use only):
npx nx generate @nx/react:library ui --buildable

# Publishable (for npm too):
npx nx generate @nx/react:library ui --publishable --importPath=@myorg/ui

모듈 경계 적용

@nx/enforce-module-boundaries ESLint 규칙을 사용하여 순환 종속성을 방지하고 서로 가져올 수 있는 프로젝트를 제한하세요.

// nx.json or .eslintrc
"depConstraints": [
  // Apps can only import from libs:
  { "sourceTag": "type:app", "onlyDependOnLibsWithTags": ["type:lib"] },
  // Feature libs can't import other feature libs (via shared libs only):
  { "sourceTag": "type:feature", "notDependOnLibsWithTags": ["type:feature"] }
]

공유 라이브러리를 위한 Storybook

UI 라이브러리를 대상으로 Storybook을 실행하여 어떤 앱과도 독립적으로 컴포넌트를 격리된 환경에서 문서화하세요.

# Generate Storybook config for the ui lib:
npx nx generate @nx/storybook:configuration ui

# Run Storybook:
npx nx storybook ui

라이브러리 테스트

각 라이브러리에는 자체 테스트 대상이 있습니다. 라이브러리가 변경되면 해당 라이브러리와 영향을 받는 모든 앱의 테스트를 실행하세요.

# Test specific library:
npx nx test ui

# Test all affected by a change:
npx nx affected --target=test

모노레포의 버전 관리

모노레포에서는 모든 패키지가 하나의 package.json과 버전을 공유합니다. 게시 가능한 라이브러리에는 @jscutlery/semver나 Changesets 같은 도구를 사용하여 독립적인 버전 관리를 하세요.

기존 코드를 라이브러리로 이전하기

공유 코드를 라이브러리로 점진적으로 옮기세요. 라이브러리를 만들고, 파일을 옮기고, 가져오기를 업데이트하면 TypeScript 경로 별칭이 나머지 작업을 처리합니다.

# Move a component:
# 1. Copy src/components/Button.tsx → libs/ui/src/lib/Button.tsx
# 2. Export from libs/ui/src/index.ts
# 3. Update imports across apps from relative paths to '@myorg/ui'
# 4. Delete the original file

Compodoc 또는 Storybook Docs로 문서화하기

라이브러리 파일의 TypeScript 타입과 JSDoc 주석에서 API 문서를 생성하려면 Storybook의 autodocs 태그 또는 Compodoc을 사용하세요.

빠른 확인

공유 Nx 라이브러리에서 가져오는 사용자를 위한 단일 진입점은 무엇이어야 합니까?

복습

nx generate로 라이브러리를 생성하고, 모든 항목을 하나의 index.ts에서 내보내며, ESLint 규칙으로 모듈 경계를 적용하세요. 더 빠른 증분 빌드에는 빌드 가능한 라이브러리를 사용하고, npm에 릴리스해야 할 때는 게시 가능한 라이브러리를 사용하세요. 격리된 문서화를 위해 UI 라이브러리를 대상으로 Storybook을 실행하세요.

자주 묻는 질문

“공유 라이브러리와 내부 패키지” 강의는 무료인가요?

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

“공유 라이브러리와 내부 패키지”에서 뭘 배우나요?

공유 UI 및 유틸리티 라이브러리를 만들고 TypeScript 경로 별칭으로 여러 앱에서 가져옵니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“공유 라이브러리와 내부 패키지” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. React 앱으로 Nx 모노레포 만들기
  2. 공유 라이브러리와 내부 패키지
  3. Nx 영향받은 명령과 캐싱
  4. 코드 생성기와 작업 공간 자동화
← React Academy(으)로 돌아가기