Перейти до основного вмісту
Версія: 10.x

pnpm deploy

Розгортає пакунок з робочої області. Під час розгортання файли пакунка копіюються в цільову теку. Усі залежності розгорнутого пакунка, включно з залежностями з робочої області, встановлюються всередині ізольованої теки node_modules цільової теки. Цільова тека міститиме переносимий пакунок, який можна скопіювати на сервер і виконати без додаткових кроків.

примітка

By default, the deploy command only works with workspaces that have the inject-workspace-packages setting set to true. If you want to use deploy without "injected dependencies", use the --legacy flag or set force-legacy-deploy to true.

Використання:

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

Якщо ви створюєте свій проєкт перед розгортанням, також використовуйте параметр --prod, щоб пропустити встановлення devDependencies.

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

Використання в образі docker. Після створення всього у вашому монорепо, зробіть це у другому образі, який використовує ваш базовий образ монорепо як контекст збірки, або на додатковій стадії збирання:

# 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

Force legacy deploy implementation.

By default, pnpm deploy will try creating a dedicated lockfile from a shared lockfile for deployment. The --legacy flag disables this behavior and also allows using the deploy command without the inject-workspace-packages=true setting.

Файли, включені в розгорнутий проєкт

Стандартно всі файли проєкту копіюються під час розгортання, але це можна змінити одним з наступних способів, які описано у порядку їх наведення:

  1. У файлі package.json проєкту може бути поле "files", яке містить список файлів та тек, які повинні бути скопійовані.
  2. Якщо у теці застосунку є файл .npmignore, то всі файли, перелічені в ньому, ігноруються.
  3. Якщо у теці застосунку є файл .gitignore, то всі файли, перелічені в ньому, ігноруються.