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

pnpm deploy

Розгортає пакунок з робочої області. Під час розгортання файли пакунка копіюються в цільову теку. All dependencies of the deployed package, including dependencies from the workspace, are installed inside an isolated node_modules directory at the target directory. Цільова тека міститиме переносимий пакунок, який можна скопіювати на сервер і виконати без додаткових кроків.

нотатка

Стандартно команда deploy працює лише з тими робочими просторами, для яких параметр inject-workspace-packages встановлено у значення true. Якщо ви хочете використовувати розгортання без «привнесених залежностей», використовуйте прапорець --legacy або встановіть force-legacy-deploy у значення true.

нотатка

Коли встановлено опцію enableGlobalVirtualStore, pnpm deploy ігнорує її та завжди створює локалізоване віртуальне сховище в теці розгортання. Це дозволяє зберегти теку розгортання автономною та переносною.

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

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

In case you build your project before deployment, also use the --prod option to skip devDependencies installation.

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 are not installed.

--prod, -P

Packages in devDependencies won't be installed.

--filter <package_selector>

Читайте більше про фільтрування.

--legacy

Використовувати історичну реалізацію розгортання.

Стандартно, pnpm deploy спробує створити спеціальний файл блокування зі спільного файлу блокування для розгортання. Прапорець --legacy вимикає цю поведінку, а також дозволяє використовувати команду deploy без параметра inject-workspace-packages=true.

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

By default, all the files of the project are copied during deployment but this can be modified in one of the following ways which are resolved in order:

  1. The project's package.json may contain a "files" field to list the files and directories that should be copied.
  2. If there is an .npmignore file in the application directory then any files listed here are ignored.
  3. If there is a .gitignore file in the application directory then any files listed here are ignored.

Налаштування

forceLegacyDeploy

  • Стандартно: false
  • Тип: Boolean

Стандартно, pnpm deploy спробує створити спеціальний файл блокування зі спільного файлу блокування для розгортання. Якщо цей параметр встановлено у значення true, буде використано успадковану поведінку deploy.