pnpm deploy

워크스페이스에서 패키지를 배포합니다. 배포 중에 배포된 패키지의 파일이 대상 디렉터리에 복사됩니다. 작업공간의 종속성을 포함하여 배포된 패키지의 모든 종속성은 대상 디렉터리의 격리된 node_modules 디렉터리 내에 설치됩니다. 대상 디렉터리에는 추가 단계 없이 서버에 복사하고 실행할 수 있는 이식 가능한 패키지가 포함됩니다.

참고

기본적으로 배포 명령은 inject-workspace-packages 설정이 true로 설정된 워크스페이스에서만 작동합니다. 배포를 "주입된 종속성" 없이 사용하려면 --legacy 플래그를 사용하거나 force-legacy-deploy를 true로 설정하세요.

참고

enableGlobalVirtualStore 옵션이 설정되어 있으면, pnpm deploy는 이를 무시하고 항상 배포 디렉터리 안에 로컬 가상 스토어를 생성합니다. 이렇게 하면 배포 디렉터리가 자체적으로 완결되고 이식 가능한 상태로 유지됩니다.

사용법:

pnpm --filter=<deployed project name> deploy <target directory>

배포 전에 프로젝트를 빌드하는 경우 --prod 옵션을 사용하여 devDependencies 설치를 건너뜁니다.

pnpm --filter=<deployed project name> --prod deploy <target directory>

도커 이미지에서의 사용. 모노레포에서 모든 것을 빌드한 후 모노레포 기본 이미지를 빌드 컨텍스트로 사용하는 두 번째 이미지 또는 추가 빌드 단계에서 이 작업을 수행하세요.

# syntax=docker/dockerfile:1.4

FROM workspace as pruned
RUN pnpm --filter <your package name> --prod deploy pruned

FROM node:18-alpine
WORKDIR /app

ENV NODE_ENV=production

COPY --from=pruned /app/pruned .

ENTRYPOINT ["node", "index.js"]

옵션#

--dev, -D#

devDependencies만 설치됩니다.

--no-optional#

optionalDependencies 가 설치되지 않습니다.

--prod, -P#

devDependencies의 패키지는 설치되지 않습니다.

--filter <package_selector>#

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

--legacy#

레거시 배포 구현을 강제로 사용합니다.

기본적으로 pnpm deploy는 배포를 위해 공유 lockfile에서 전용 lockfile을 생성하려고 시도합니다. --legacy 플래그는 이 동작을 비활성화하며, inject-workspace-packages=true 설정 없이도 배포 명령을 사용할 수 있게 합니다.

배포된 프로젝트에 포함된 파일#

기본적으로 배포 중에는 프로젝트의 모든 파일이 복사되지만, 다음 방법 중 _하나_로 변경할 수 있으며 순서대로 적용됩니다:

  1. 프로젝트의 package.json 에는 복사해야 하는 파일 및 디렉터리를 나열하는 "files" 필드가 포함될 수 있습니다.
  2. 애플리케이션 디렉터리에 .npmignore 파일이 있으면 여기에 나열된 모든 파일이 무시됩니다.
  3. 애플리케이션 디렉터리에 .gitignore 파일이 있으면 여기에 나열된 모든 파일이 무시됩니다.

환경설정#

forceLegacyDeploy#

  • 기본값: false
  • 유형: Boolean

기본적으로 pnpm deploy는 배포를 위해 공유 lockfile에서 전용 lockfile을 생성하려고 시도합니다. 이 설정을 true로 설정하면 레거시 deploy 동작이 사용됩니다.