Установка через yarn

Библиотека Universal Router распространяется как пакет для экосистемы Node.js и устанавливается через менеджеры пакетов. Yarn обеспечивает детерминированную установку зависимостей, кэширование и более быструю работу по сравнению с npm, что особенно важно при разработке сложных dApp и сервисов взаимодействия с блокчейнами.

Подготовка окружения

Перед установкой необходимо убедиться в наличии следующих компонентов:

  • Node.js версии не ниже 16.x
  • Yarn версии 1.x или 3.x (Berry)
  • Инициализированный проект (package.json)

Проверка версий:

node -v
yarn -v

Если проект ещё не инициализирован:

yarn init -y

Это создаст базовый package.json, необходимый для управления зависимостями.

Установка Universal Router

Установка производится стандартной командой добавления зависимости:

yarn add @uniswap/universal-router

После выполнения команды в проекте появятся:

  • запись в dependencies внутри package.json
  • обновлённый yarn.lock для фиксации версий
  • скачанные пакеты в директории node_modules

Установка дополнительных зависимостей

Universal Router тесно взаимодействует с Ethereum-инфраструктурой, поэтому почти всегда требуется установка сопутствующих библиотек:

yarn add ethers

В некоторых сценариях также используются:

yarn add viem

или

yarn add web3

Выбор зависит от архитектуры проекта и предпочтений в работе с RPC.

Проверка корректности установки

После установки важно убедиться, что пакет доступен для импорта:

import { UniversalRouter } from '@uniswap/universal-router'

Если используется CommonJS:

const { UniversalRouter } = require('@uniswap/universal-router')

Ошибки импорта обычно связаны с:

  • несовместимой версией Node.js
  • конфликтами зависимостей
  • некорректной настройкой type: "module" в package.json

Работа с Yarn Workspaces

В монорепозиториях установка может выполняться в корневом workspace:

yarn workspace my-app add @uniswap/universal-router

Это позволяет:

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

Использование Yarn Plug’n’Play (PnP)

В Yarn 3+ может использоваться режим Plug’n’Play без папки node_modules. В этом случае важно учитывать:

  • корректную поддержку со стороны инструментов (например, Webpack, Vite)
  • необходимость включения SDK:
yarn dlx @yarnpkg/sdks vscode

Если возникают проблемы с резолвингом модулей, возможен возврат к классической схеме:

yarn config set nodeLinker node-modules

Фиксация версии библиотеки

Для стабильности рекомендуется фиксировать версию:

yarn add @uniswap/universal-router@latest

или конкретную:

yarn add @uniswap/universal-router@1.4.0

Это предотвращает неожиданные изменения API при автоматических обновлениях.

Очистка и переустановка зависимостей

При возникновении ошибок полезно выполнить полную переустановку:

rm -rf node_modules yarn.lock
yarn install

Это устраняет:

  • повреждённые зависимости
  • конфликтующие версии
  • ошибки резолвинга

Интеграция с TypeScript

Universal Router поддерживает TypeScript. Для полноценной работы:

yarn add -D typescript @types/node

Проверка наличия типов:

  • пакет содержит встроенные типы
  • отдельная установка @types/... не требуется

Типичные проблемы при установке

Ошибка несовместимости зависимостей

Решение:

yarn install --check-files

Проблемы с ESM/CJS

Настройка в package.json:

{
  "type": "module"
}

или использование .cjs/.mjs расширений.

Конфликты версий ethers

Universal Router может требовать определённую версию:

yarn add ethers@5

или

yarn add ethers@6

в зависимости от версии роутера.

Проверка структуры проекта после установки

Ожидаемая структура:

project/
├── node_modules/
├── package.json
├── yarn.lock
└── src/

В package.json должна появиться запись:

"dependencies": {
  "@uniswap/universal-router": "^x.x.x"
}

Рекомендации по работе с зависимостями

  • использовать lock-файл (yarn.lock) в системе контроля версий
  • избегать глобальной установки пакета
  • обновлять зависимости осознанно, а не автоматически
  • тестировать после каждого обновления

Подготовка к следующему этапу

После установки библиотека готова к:

  • подключению к провайдеру Ethereum
  • формированию транзакций через Universal Router
  • интеграции с контрактами Uniswap

Дальнейшая работа включает настройку клиента, ABI и взаимодействие с сетью.