pnpm install

별칭: i

pnpm install은 프로젝트의 모든 종속성을 설치하는 데 사용됩니다.

CI 환경에서, lockfile이 있지만 업데이트가 필요한 경우 설치가 실패합니다.

workspace 내부에서 pnpm install은 모든 프로젝트의 모든 종속성을 설치합니다. 이 동작을 비활성화하려면 recursive-install 설정을 false로 설정하세요.

요약#

명령어의미
pnpm i --offline스토어에서만 오프라인으로 설치
pnpm i --frozen-lockfilepnpm-lock.yaml이 업데이트되지 않음
pnpm i --lockfile-only오직 pnpm-lock.yaml만 업데이트됨

의존성 필터링 옵션#

기존 lockfile이 없으면 pnpm은 lockfile을 생성해야 하며, 이 lockfile은 종속성 필터링과 관계없이 일관되어야 합니다. 따라서 lockfile이 없는 디렉터리에서 pnpm install --prod를 실행해도 개발 종속성은 여전히 해석되며, 해석에 실패하면 오류가 발생합니다. 이 규칙의 유일한 예외는 link: 종속성입니다.

--frozen-lockfile이 없으면 pnpm은 file: 종속성의 오래된 정보를 확인하므로, file:의 대상이 제거된 환경에서 --frozen-lockfile 없이 pnpm install --prod를 실행하면 오류가 발생합니다.

--prod, -P#

  • 기본값: false
  • 유형: Boolean

true이면 pnpm은 devDependencies에 나열된 패키지를 설치하지 않으며, 이미 설치되어 있는 경우 제거합니다. false이면 pnpm은 devDependencies 및 dependencies에 나열된 모든 패키지를 설치합니다.

--dev, -D#

오직 devDependencies만 설치되며, dependencies는 이미 설치되어 있는 경우 제거됩니다.

--no-optional#

optionalDependencies는 설치되지 않습니다.

옵션#

--force#

의존성 강제 재설치: 저장소에서 수정된 패키지를 다시 가져오고, 호환되지 않는 pnpm 버전에서 생성된 lockfile 및 모듈 디렉터리를 다시 만듭니다. 현재 환경(cpu, os, arch)을 만족하지 않더라도 모든 optionalDependencies를 설치합니다.

--offline#

  • 기본값: false
  • 유형: Boolean

true이면 pnpm은 스토어에 이미 있는 패키지만 사용합니다. 로컬에서 패키지를 찾을 수 없으면 설치가 실패합니다.

--prefer-offline#

  • 기본값: false
  • 유형: Boolean

true이면 캐시된 데이터의 최신 여부 확인을 건너뛰지만, 누락된 데이터는 서버에 요청합니다. 완전한 오프라인 모드를 강제하려면 --offline을 사용하세요.

--no-lockfile#

pnpm-lock.yaml 파일을 읽거나 생성하지 않습니다.

--lockfile-only#

  • 기본값: false
  • 유형: Boolean

이 옵션을 사용하면 pnpm-lock.yaml과 package.json만 업데이트합니다. node_modules 디렉터리에는 아무것도 기록되지 않습니다.

--fix-lockfile#

깨진 lockfile 항목을 자동으로 수정합니다.

--frozen-lockfile#

  • 기본값:
    • CI가 아닌 경우: false
    • CI의 경우: lockfile이 있으면 true
  • 유형: Boolean

값이 true이면 pnpm은 lockfile을 생성하지 않으며, lockfile이 매니페스트와 동기화되지 않았거나 / 업데이트가 필요하거나 lockfile이 없으면 설치에 실패합니다.

이 설정은 CI environments에서 기본적으로 true입니다. 다음 코드는 CI 환경을 감지하는 데 사용됩니다.

https://github.com/watson/ci-info/blob/44e98cebcdf4403f162195fbcf90b1f69fc6e047/index.js#L54-L61
exports.isCI = !!(
  env.CI || // Travis CI, CircleCI, Cirrus CI, GitLab CI, Appveyor, CodeShip, dsari
  env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI
  env.BUILD_NUMBER || // Jenkins, TeamCity
  env.RUN_ID || // TaskCluster, dsari
  exports.name ||
  false
)

--merge-git-branch-lockfiles#

모든 git branch lockfile을 병합합니다. git 브랜치 lockfile에 대해 자세히 알아보세요.

--reporter=<name>#

  • 기본값:
    • TTY stdout의 경우: default
    • TTY가 아닌 stdout의 경우: append-only
  • 유형: default, append-only, ndjson, silent

터미널에 설치 진행률에 대한 디버그 정보를 기록할 기록자를 선택할 수 있습니다.

  • silent - 치명적인 오류를 포함하여 콘솔에 아무것도 출력하지 않습니다
  • default - stdout이 TTY일 때의 기본 리포터
  • append-only - 출력이 항상 끝에 추가됩니다. 커서 조작이 수행되지 않습니다.
  • ndjson - 가장 상세한 리포터입니다. 모든 로그를 ndjson 형식으로 출력합니다

출력되는 정보의 유형을 변경하려면 loglevel 설정을 사용하세요.

--use-store-server#

  • 기본값: false
  • 유형: Boolean

위험

사용 중단된 기능

백그라운드에서 스토어 서버를 시작합니다. 스토어 서버는 설치가 완료된 후에도 계속 실행됩니다. 스토어 서버를 중지하려면 pnpm server stop을 실행하세요

--shamefully-hoist#

  • 기본값: false
  • 유형: Boolean

기존 npm이나 yarn과 유사한 평탄한 node_modules 구조를 생성합니다. 경고: 이 방법은 강력히 권장하지 않습니다.

--ignore-scripts#

  • 기본값: false
  • 유형: Boolean

프로젝트 package.json 및 해당 종속성에 정의된 스크립트를 실행하지 않습니다.

--filter <package_selector>#

필터링에 대해 자세히 알아보세요.

--resolution-only#

의존성 해석을 다시 실행합니다: 피어 의존성 문제를 출력할 때 유용합니다.

--cpu=<name>#

버전 10.14.0에서 추가됨

설치할 네이티브 모듈의 CPU 아키텍처를 재정의합니다. 허용되는 값은 process.arch에서 파생된 package.json의 cpu 필드와 동일합니다.

--os=<name>#

버전 10.14.0에서 추가됨

설치할 네이티브 모듈의 OS를 재정의합니다. 허용되는 값은 package.json의 os 필드와 동일하며, 이는 process.platform에서 파생됩니다.

--libc=<name>#

버전 10.14.0에서 추가됨

설치할 네이티브 모듈의 libc를 재정의합니다. 허용되는 값은 package.json의 libc 필드와 동일합니다.