설정 (pnpm-workspace.yaml)

pnpm은 명령줄, 환경 변수, pnpm-workspace.yaml에서 설정을 가져옵니다.

.npmrc 파일에서는 인증 및 레지스트리 설정만 읽습니다. 그 외의 모든 설정(hoistPattern, nodeLinker, shamefullyHoist 등)은 pnpm-workspace.yaml 또는 글로벌 ~/.config/pnpm/config.yaml에서 설정해야 합니다.

pnpm config 명령을 사용하면 프로젝트 단위 및 전역 설정 파일의 내용을 조회하거나 수정할 수 있습니다.

사용되는 주요 설정 파일은 다음과 같습니다:

참고

인증 관련 설정은 .npmrc를 통해 처리됩니다.

설정 파일의 값은 ${NAME} 구문을 사용해 환경 변수를 포함할 수 있습니다. 환경 변수의 기본값을 지정할 수도 있습니다. ${NAME-fallback}을 사용하면 NAME이 설정되지 않은 경우 fallback을 반환합니다. ${NAME:-fallback}은 NAME이 설정되지 않았거나 빈 문자열인 경우 fallback을 반환합니다.

경고

버전 v11.5.3부터 레지스트리 URL을 정의하는 pnpm-workspace.yaml의 설정, 즉 registry와 registries 및 namedRegistries의 URL 값에서는 환경 변수가 확장되지 않습니다. 이러한 설정에서 ${...} 플레이스홀더를 포함하는 값은 무시됩니다. registries의 레지스트리 선언 형식(v11.23.0부터)에서는 URL이 값이 아니라 키이며, 키에도 동일한 규칙이 적용됩니다. pnpm-workspace.yaml은 저장소에 커밋되므로, 레지스트리 URL에서 환경 변수를 확장하면 악의적인 저장소가 이를 악용해 환경의 비밀 정보를 공격자가 제어하는 레지스트리로 유출할 수 있습니다. 대신 신뢰할 수 있는 위치, 즉 글로벌 설정 파일이나 CLI 옵션에서 동적 레지스트리 URL을 설정하세요.

참고

버전 v11.22.0부터 프로젝트의 pnpm-workspace.yaml은 pnpm이 자격 증명, 자체 설치 또는 기타 머신 수준 상태를 보관할 위치를 지정할 수 없습니다: bin, configDir, dir, globalBinDir, globalDir, npmrcAuthFile, pnpmHomeDir, stateDir, userconfig, workspaceDir은 해당 파일에서 경고와 함께 무시됩니다. 대신 글로벌 설정 파일이나 명령줄에서 설정하세요. cacheDir와 storeDir은 영향을 받지 않습니다.

packages#

pnpm-workspace.yaml은 설정 외에도 workspace의 루트를 정의하며, 워크스페이스에 디렉터리를 포함하거나 제외할 수 있게 해 줍니다. packages 필드를 생략하면 루트 패키지만 워크스페이스에 포함됩니다.

예시:

pnpm-workspace.yaml
packages: # specify a package in a direct subdir of the root - 'my-app' # all packages in direct subdirs of packages/ - 'packages/*' # all packages in subdirs of components/ - 'components/**' # exclude packages that are inside test directories - '!**/test/**'

루트 패키지는 사용자 지정 위치 와일드카드가 사용되는 경우에도 항상 포함됩니다.

카탈로그도 pnpm-workspace.yaml 파일에 정의됩니다. 자세한 내용은 Catalogs를 참고하세요.

pnpm-workspace.yaml
packages:
  - 'packages/*'

catalog:
  chalk: ^4.1.2

catalogs:
  react16:
    react: ^16.7.0
    react-dom: ^16.7.0
  react17:
    react: ^17.10.0
    react-dom: ^17.10.0

packageConfigs#

추가된 버전: v11.0.0

개별 워크스페이스 패키지에 대해 프로젝트별 설정을 지정할 수 있습니다. 이는 워크스페이스 프로젝트별 .npmrc 파일을 대체합니다.

packageConfigs는 패키지 이름과 설정 객체의 맵으로 지정할 수 있습니다:

pnpm-workspace.yaml
packages:
  - "packages/project-1"
  - "packages/project-2"
packageConfigs:
  "project-1":
    saveExact: true
  "project-2":
    savePrefix: "~"

또는 패턴 매칭 규칙의 배열로 지정할 수 있습니다:

pnpm-workspace.yaml
packages:
  - "packages/project-1"
  - "packages/project-2"
packageConfigs:
  - match: ["project-1", "project-2"]
    modulesDir: "node_modules"
    saveExact: true

설정#

모든 설정은 주제별로 그룹화되어 아래에 나열되어 있습니다. 각 설정을 따라가 문서를 읽거나, 그룹의 전체 레퍼런스를 여세요.

종속성 해석#

전체 레퍼런스 →

Node-Modules 설정#

전체 레퍼런스 →

의존성 호이스팅 설정#

전체 레퍼런스 →

스토어 설정#

전체 레퍼런스 →

Lockfile 설정#

전체 레퍼런스 →

네트워크 설정#

전체 레퍼런스 →

요청 설정#

전체 레퍼런스 →

피어 종속성 설정#

전체 레퍼런스 →

CLI 설정#

전체 레퍼런스 →

Node.js 설정#

전체 레퍼런스 →

빌드 설정#

전체 레퍼런스 →

버전 관리 설정#

전체 레퍼런스 →

기타 설정#

전체 레퍼런스 →

워크스페이스 설정#

이 설정들도 pnpm-workspace.yaml에서 구성하지만, 해당 설정이 속한 워크스페이스 기능과 함께 문서화되어 있습니다.

전체 레퍼런스 →

다른 곳에 문서화된 설정#