pnpm deploy
Розгортає пакунок з робочої області. Під час розгортання файли пакунка копіюються в цільову теку. Усі залежності розгорнутого пакунка, включно з залежностями з робочої області, встановлюються всередині ізольованої теки node_modules
цільової теки. Цільова тека міститиме переносимий пакунок, який можна скопіювати на сервер і виконати без додаткових кроків.
Стандартно команда deploy працює лише з тими робочими просторами, для яких параметр inject-workspace-packages
встановлено у значення true
. Якщо ви хочете використовувати розгортання без «привнесених залежностей», використовуйте прапорець --legacy
або встановіть force-legacy-deploy
у значення 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
Використовувати історичну реалізацію розгортання.
Стандартно, pnpm deploy
спробує створити спеціальний файл блокування зі спільного файлу блокування для розгортання. Прапорець --legacy
вимикає цю поведінку, а також дозволяє використовувати команду deploy без параметра inject-workspace-packages=true
.
Файли, включені в розгорнутий проєкт
Стандартно всі файли проєкту копіюються під час розгортання, але це можна змінити одним з наступних способів, які описано у порядку їх наведення:
- У файлі
package.json
проєкту може бути поле "files", яке містить список файлів та тек, які повинні бути скопійовані. - Якщо у теці застосунку є файл
.npmignore
, то всі файли, перелічені в ньому, ігноруються. - Якщо у теці застосунку є файл
.gitignore
, то всі файли, перелічені в ньому, ігноруються.