Перейти к основному содержимому

Использование pnpm с Lerna

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

Lerna можно использовать в pnpm рабочем пространстве, чтобы получить все преимущества как pnpm, так и Lerna.

При работе в pnpm рабочем пространстве Lerna будет:

  • определять расположение пакетов через pnpm-workspace.yaml (https://pnpm.io/workspaces)

  • игнорировать "workspaces" в package.json

  • блокировать команды bootstrap, link и add. Вместо них используйте команды pnpm для управления зависимостями (https://pnpm.io/cli/install).

  • учитывать протокол рабочего пространства для зависимостей пакетов.

    • При выполнении lerna version зависимости обновляются стандартным образом, но префикс workspace: сохраняется, если он присутствует.
    • При использовании псевдонима рабочего пространства lerna version не изменяет версию зависимости, так как псевдонимы не содержат номера версии для обновления.

Начало работы

Чтобы настроить pnpm с Lerna:

  1. Установите pnpm, если ещё не сделали этого: https://pnpm.io/installation.

  2. Удалите папку node_modules/ в корне, если она существует. Если вы не используете рабочие пространства, выполните lerna clean для удаления node_modules/ во всех пакетах.

  3. Укажите "npmClient": "pnpm" в lerna.json.

  4. Создайте файл pnpm-workspace.yaml в корне проекта. Если вы используете рабочие пространства npm или yarn, перенесите свойство "workspaces" из package.json в pnpm-workspace.yaml. Если вы не использовали рабочие пространства, перенесите свойство "packages" из lerna.json в pnpm-workspace.yaml. Например:

    package.json
    {
    "workspaces": ["packages/*"]
    }

    и

    lerna.json
    {
    "packages": ["packages/*"]
    }

    преобразуются в:

    pnpm-workspace.yaml
    packages:
    - "packages/*"
  5. (опционально) Выполните pnpm import для генерации pnpm-lock.yaml из существющего lock-файла. Подробнее о поддерживаемых источниках lock-файлов: https://pnpm.io/cli/import.

  6. Выполните pnpm install.