egg README

The project's README from github.com/eggjs/egg. As one markdown file: README.md.

English | 简体中文

NPM version NPM quality NPM download Node.js Version FOSSA Status

Continuous Integration Test coverage Known Vulnerabilities Open Collective backers and sponsors

Features

Quickstart

Follow the commands listed below.

$ corepack enable utoo
$ mkdir showcase && cd showcase
$ ut create egg@beta
$ ut install
$ ut run dev
$ open http://localhost:7001

Node.js >= 22.18.0 required.

Monorepo Structure

This project is structured as a utoo monorepo with the following packages:

The monorepo uses utoo catalog mode for centralized dependency management, ensuring consistent versions across all packages.

Development Commands

# Install dependencies for all packages
ut install --from pnpm

# Build all packages
ut run build

# Test all packages
ut run test

# Run specific package commands
ut --filter=egg run test
ut --filter=@examples/helloworld-typescript run dev
ut --filter=site run dev

Local External Services

Some DAL, ORM, Redis, and ecosystem benchmark paths need local MySQL and Redis services. Start the repository-aligned Docker services before running those tests on a clean machine:

ut run dev:services:start

This starts MySQL 8 and Redis 7, matching the main CI service versions, and creates the databases used by local DAL/ORM/e2e fixtures: test, apple, banana, test_runtime_datasource, test_runtime_dao, test_dal_plugin, test_dal_standalone, cnpmcore, and cnpmcore_unittest.

Useful commands:

ut run dev:services:status
ut run dev:services:stop
ut run dev:services:reset

The default host ports are 127.0.0.1:3306 for MySQL and 127.0.0.1:6379 for Redis. If either port is already used, the start command stops before changing containers. Keep using the existing service if it is compatible with CI, or stop it and run the command again. You can change Docker host ports with EGG_DEV_SERVICES_MYSQL_PORT and EGG_DEV_SERVICES_REDIS_PORT; however, the full DAL/ORM/Redis local test path still expects the default host ports.

Image overrides are available for compatibility checks:

EGG_DEV_SERVICES_MYSQL_IMAGE=mysql:5.7 ut run dev:services:start
EGG_DEV_SERVICES_REDIS_IMAGE=redis:7 ut run dev:services:start

Run ut run dev:services:reset before switching MySQL image families, for example between MySQL 8 and MySQL 5.7, because MySQL data directories are not downgrade-compatible across major versions.

Current hard-coded service assumptions:

Documentations

Contributors

contributors

How to Contribute

Please let us know how can we help. Do check out issues for bug reports or suggestions first.

To become a contributor, please follow our contributing guide, and review the repository guidelines for day-to-day development tips.

Sponsors and Backers

sponsors backers

License

MIT

FOSSA Status

egg (eggjs/egg)

Searching Database…

19K ·GitHub
Что это такое?Egg — это фреймворк для Node.js, созданный для построения более качественных корпоративных фреймворков и веб-приложений и работающий поверх Koa. У проекта около 19 000 звёзд на GitHub, документация доступна на английском и упрощённом китайском языках.
Это фреймворк, на котором я строю приложение, или библиотека, которую я подключаю в свой код?Полноценный фреймворк: ваше приложение строится поверх него, а в качестве серверного слоя используется Koa. Основной пакет, packages/egg, в репозитории описан как главный фреймворк Eggjs.
Как запустить с ним приложение?Следуйте командам Quickstart в начале README. В репозитории также есть два готовых hello-world-приложения, с которых можно начать: examples/helloworld-commonjs и examples/helloworld-typescript.
Что должно быть установлено, прежде чем я начну?Node.js 22.18.0 или новее. Чтобы локально запускать тесты DAL, ORM и Redis из этого репозитория, нужно также поднять Docker-сервисы с MySQL 8 и Redis 7 — тех же версий, что и в CI.
Есть ли подводные камни в этой локальной настройке тестов?Фикстуры ожидают стандартные порты 127.0.0.1:3306 для MySQL и 6379 для Redis, и команда запуска остановится, если любой из них занят. Перед переключением между семействами образов MySQL выполняйте 'ut run dev:services:reset', так как каталоги с данными не совместимы с откатом на более старую версию.
Что Egg даёт сразу из коробки?Четыре ключевые возможности: встроенное управление процессами, система плагинов, настройка фреймворка под себя и множество готовых плагинов для расширения вашего приложения.
Почему он называет себя корпоративным фреймворком?Название — буквальное: проект «создан, чтобы строить лучшие корпоративные фреймворки и приложения». Речь о крупных серверных приложениях, а настройка фреймворка позволяет командам превратить Egg в свой собственный внутренний фреймворк.
Как устроен репозиторий внутри?Это монорепозиторий utoo: packages/egg содержит основной фреймворк, а site/ — сайт с документацией; версии зависимостей управляются централизованно для всех пакетов.
Egg до сих пор активно поддерживается?Да — проект существует с 2016 года, у него около 19 000 звёзд, он не переведён в архив, и в нём работают CI-воркфлоу для юнит-тестов, e2e и релизных пайплайнов.
What are similar projects?koa, elpis, crystal, apollo-server, fastify, hapi, carno.js, node-restify
Creator
eggjs
Size
29.4 MB
Stars
19K
Age
10y
Commits · 90 Days