Первые шаги с Lino

Lino — это инструмент командной строки для создания, развития и стандартизации профессиональных .NET-приложений с четко определенной архитектурой. Он автоматизирует повторяющиеся задачи scaffolding, но его цель выходит за рамки генерации файлов: Lino проводит разработчика через согласованную техническую структуру с разделением обязанностей, явными слоями, моделированием домена, use cases, APIs, интеграциями, событиями, персистентностью, web-приложениями и сквозными возможностями. Цель — ускорить старт и развитие реальных систем без отказа от качества, трассируемости и архитектурной ясности.

Предварительные требования

Перед установкой Lino проверьте, что ваша среда правильно подготовлена:

  • ✅ Установлен .NET 10.0 SDK или выше. Скачать .NET
  • .NET CLI доступна в терминале. Проверьте с помощью: dotnet --version
  • Git установлен для контроля версий. Скачать Git
  • Entity Framework Core CLI установлена для поддержки migrations: dotnet tool install --global dotnet-ef
  • ✅ Контейнерная среда, совместимая с OCI, например Docker Desktop или Podman.

Совместимость с платформами

Lino является кроссплатформенным и может использоваться в основных операционных системах:

  • ✅ Windows
  • ✅ macOS
  • ✅ Linux

Установка

Lino распространяется как глобальный инструмент .NET. Перед продолжением убедитесь, что установлен .NET 10 SDK или выше.

Чтобы установить последнюю версию, выполните:

dotnet tool install --global Tolitech.Lino

После установки проверьте работу Lino, выполнив:

lino --version

Если установка выполнена успешно, установленная версия будет показана в терминале.

Аутентификация

После установки Lino необходимо выполнить аутентификацию, чтобы получить доступ ко всем возможностям.

Если у вас уже есть учетная запись, войдите с помощью команды:

lino auth login

Вам будет предложено указать:

  • Пользователь: ранее зарегистрированный адрес электронной почты.
  • Пароль: пароль, связанный с учетной записью.

Если у вас еще нет учетной записи, зарегистрируйтесь напрямую через CLI:

lino user register

Во время регистрации укажите:

  • Имя: имя пользователя.
  • Фамилия: фамилия пользователя.
  • E-mail: адрес электронной почты, который также будет использоваться для входа.
  • Пароль: надежный пароль длиной не менее 6 символов.
  • Подтверждение пароля: введите пароль еще раз для проверки.

После завершения регистрации пользователь будет автоматически аутентифицирован.

Языковые настройки

По умолчанию Lino CLI отображается на английском языке en, но вы можете изменить язык по своему предпочтению среди доступных вариантов:

en | pt | es | de | fr | it | ja | ko | ru | zh

Чтобы задать новый язык, выполните следующую команду:

lino preferences culture set --name <culture>

Замените <culture> одной из поддерживаемых культур. Например, используйте pt для португальского, en для английского или es для испанского.

Также можно выбрать язык из интерактивного списка:

lino preferences culture set

Настройка кодировки UTF-8 (необязательно)

Для корректного отображения языков со специальными символами (например, японского, корейского, русского или китайского) убедитесь, что ваш терминал настроен на использование кодировки UTF-8.

В Windows PowerShell настройте кодировку, выполнив следующие команды:

[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8

Примечание: В Linux, macOS и Windows Terminal поддержка UTF-8 обычно встроена. Тем не менее рекомендуется проверить конфигурацию, если возникают проблемы с отображением символов.

Доступные команды

Lino организует автоматизацию в группы команд. Каждая группа представляет архитектурное намерение: создать solution, добавить сервисы, смоделировать домен, открыть APIs, сгенерировать страницы, настроить интеграции, управлять migrations, версионировать артефакты и подготовить builds.

Самый надежный справочник для вашей машины — помощь самой установленной CLI. Используйте lino --help, чтобы увидеть полное дерево команд, и используйте --help в любой группе, чтобы посмотреть параметры, aliases, обязательные аргументы и примеры.

Поскольку Lino постоянно развивается, между версиями могут появляться новые команды и параметры. Рассматривайте эту документацию как руководство по использованию и подтверждайте точный синтаксис в терминале всякий раз, когда автоматизируете workflow или обучаете кого-то из команды.

Чтобы вывести список доступных команд, выполните корневую команду или явно запросите справку:

lino
lino --help
lino --help
lino project --help
lino database migrations --help
lino integration operation --help

Чтобы просмотреть подкоманды и параметры любой группы, используйте имя команды отдельно или сочетайте его с --help:

lino <command>
lino <command> --help

Например, при просмотре группы project CLI показывает описание группы, типичные примеры и доступные подкоманды:

lino project --help
ОПИСАНИЕ:
    Управляет проектами Lino.

ПРИМЕРЫ:
    lino project new --name MyProject
    lino project list

КОМАНДЫ:
    new     Создает новый проект.
    list    Выводит список созданных проектов.
    delete  Удаляет существующий проект.

В примерах значения между <...> обозначают аргументы, которые нужно заменить реальным значением вашего проекта. Например, <ProjectName> нужно заменить именем solution, <ServiceName> — именем сервиса, а <culture> — поддерживаемой культурой, например pt или en.

Основные группы команд:

ГруппаОсновные командыИспользование
project new, list, delete Создает, перечисляет и удаляет проекты Lino.
service new, list, delete Добавляет, перечисляет и удаляет backend-сервисы.
module new, list, delete Добавляет, перечисляет и удаляет модули внутри модульных сервисов.
entity new, edit, list, delete Создает, редактирует, перечисляет и удаляет доменные сущности.
shadow-entity (shadow) new Создает контролируемые локальные копии данных из другого модуля или сервиса.
enumeration (enum) new, edit, list, delete Создает, редактирует, перечисляет и удаляет доменные перечисления.
value-object (vo) new, edit, list, delete Создает, редактирует, перечисляет и удаляет Value Objects.
property (prop) delete Удаляет свойства из доменных сущностей.
command new, list Генерирует сценарии записи, обычно связанные с изменениями состояния, транзакционными правилами и проверками намерения.
query new, list Генерирует сценарии чтения, обычно ориентированные на запросы, проекции и возврат данных без изменения состояния.
api new, list Генерирует и перечисляет API endpoints для use cases.
web-app (webapp) new Добавляет web-приложения.
page new, edit, list Генерирует, редактирует и перечисляет страницы Blazor.
event new, edit, list Создает и поддерживает доменные или интеграционные события.
event-handler (handler) new, list Создает и перечисляет обработчики событий.
error-definition (error) new, list Создает стандартизированные определения ошибок.
integration new, list, resource (new/list), operation (new/list), consume Моделирует интеграции, resources, операции и потребителей.
feature background-job add, auth add, tenant add Добавляет сквозные функции, включая фоновые задачи, аутентификацию и мультитенантность.
database migrations add, remove, list, apply, revert Управляет migrations Entity Framework Core.
secret list, set, remove, clear Управляет локальными secrets проекта.
plan add Регистрирует план выполнения с поддержкой ИИ.
version show, list, bump Просматривает и повышает версии сервисов и web apps.
build - Генерирует артефакты и container images.
user register Регистрирует пользователя для доступа к аутентифицированным возможностям Lino.
auth login, logout Управляет локальной сессией CLI, включая аутентификацию и завершение сеанса.
preferences culture set Настраивает локальные предпочтения CLI, например язык, отображаемый в интерактивных командах.

Некоторые команды для удобства показывают короткий alias в скобках. Исходные имена остаются основной ссылкой для чтения, документации, обучения, автоматизации и поддержки.

Быстрый старт

Быстро создайте современное, масштабируемое .NET-приложение, готовое к постоянному развитию, с помощью следующей команды:

lino project new --name <ProjectName>

Замените <ProjectName> реальным именем вашей solution. Например, чтобы создать проект с именем MyApp, выполните lino project new --name MyApp.

Эта команда генерирует структурированную .NET solution с четким разделением между доменом, приложением, инфраструктурой, персистентностью, API, оркестрацией и тестами. Начальная структура помогает сохранять архитектурные решения видимыми с первого commit, не позволяя смешивать бизнес-правила, доступ к данным, endpoints и операционные детали в одном месте.

Визуально начальную solution с именем MyApp можно представить так:

MyApp/
├── MyApp.slnx
├── src/
│   ├── Aspire/
│   │   ├── AppHost/
│   │   │   └── MyApp.AppHost.csproj
│   │   └── ServiceDefaults/
│   │       └── MyApp.ServiceDefaults.csproj
│   └── Services/
│       └── Shared/
│           ├── Api/
│           │   └── MyApp.Shared.Api.csproj
│           ├── Application/
│           │   └── MyApp.Shared.Application.csproj
│           ├── Domain/
│           │   └── MyApp.Shared.Domain.csproj
│           ├── Infrastructure/
│           │   └── MyApp.Shared.Infrastructure.csproj
│           └── Infrastructure.Persistence/
│               └── MyApp.Shared.Infrastructure.Persistence.csproj
└── tests/

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

Что дает начальный проект

Начальная solution, созданная Lino, сразу организована по техническим обязанностям. Вместо пустого проекта CLI подготавливает основу со слоями и компонентами, подходящими для корпоративных приложений.

ОбластьОтветственность
DomainСодержит сущности, Value Objects, enumerations, доменные события, контракты репозиториев и правила, относящиеся к бизнесу.
ApplicationОркестрирует use cases, commands, queries, валидации, handlers и входные и выходные контракты приложения.
InfrastructureИзолирует внешние детали, такие как вспомогательные сервисы, интеграции, providers, аутентификация, messaging и сквозные возможности.
PersistenceЦентрализует mappings, контекст базы данных, migrations, конкретные репозитории и unit of work.
ApiОткрывает endpoints, HTTP-контракты, фильтры, аутентификацию, авторизацию и входную документацию для внешних потребителей.
ОркестрацияПодготавливает локальный запуск компонентов, базовую observability и интеграцию между сервисами во время разработки.
TestsОрганизует тесты по ответственности, позволяя постепенно проверять домен, приложение, APIs и интеграции.

Имя, указанное в <ProjectName>, становится частью технической идентичности solution. Выберите короткое, стабильное и представительное имя, потому что оно будет использоваться в namespaces, assemblies, артефактах, конфигурациях и ссылках между компонентами.

Основные преимущества:

  • Явная архитектура: разделение между бизнес-правилами, use cases, инфраструктурой, персистентностью и входными контрактами.
  • Модульное развитие: основа подготовлена для традиционных сервисов, модульных монолитов, микросервисов и SaaS-приложений, когда этого требует контекст.
  • Согласованные технические стандарты: поддержка DDD, Clean Architecture, CQRS, событий, интеграций, migrations, тестов и observability.
  • Меньше механической работы: генерация повторяющихся структур, чтобы разработчик сосредоточился на домене, правилах, контрактах и продуктовых решениях.
  • Более предсказуемый код: соглашения об именовании, организация папок и ответственность уменьшают неоднозначность между участниками команды.

С Lino разработчик начинает не с пустой папки и не с generic template. Он начинает с opinionated-основы, рассчитанной на корпоративные системы, где каждый сгенерированный артефакт имеет ясную техническую функцию и может развиваться постепенно.

Произошла необработанная ошибка. Обновить 🗙