Continuous Integration (CI) — это практика автоматического сборки и тестирования приложения при каждом изменении кода. Для проектов на Mithril она играет критическую роль в поддержании стабильности, снижении количества багов и ускорении разработки.
Mithril, будучи лёгким и компонентным фреймворком, не накладывает жёстких требований к инфраструктуре CI. Основные шаги включают:
Выбор CI-платформы Популярные варианты: GitHub Actions, GitLab CI, CircleCI, Travis CI. Критерий выбора — интеграция с репозиторием и поддержка Node.js.
Установка Node.js и зависимостей Конфигурационный файл CI должен включать установку корректной версии Node.js и npm/yarn, а также выполнение команды установки зависимостей:
npm install
или
yarn installНастройка среды тестирования Mithril проекты обычно используют тестовые фреймворки типа Jest, Mocha или Karma. Необходимо гарантировать, что среда CI поддерживает headless-браузер (например, Puppeteer или jsdom), чтобы тесты компонентов, рендерящих DOM, выполнялись корректно.
Скрипты сборки должны включать:
Пример конфигурации GitHub Actions:
name: CI
on: [push, pull_request]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm run build
- run: npm test
Mithril-компоненты тестируются на уровне:
Пример юнит-теста для Mithril-компонента с использованием Jest и jsdom:
import m from 'mithril';
import { render } from 'mithril/test-utils';
import MyComponent from './MyComponent';
test('рендерит заголовок', () => {
const vnode = render(MyComponent);
expect(vnode.dom.textContent).toContain('Привет, Mithril');
});
CI должен включать проверку качества кода:
Пример добавления шагов в CI:
- run: npm run lint
- run: npm run typecheck
После успешной сборки и прохождения тестов CI может автоматически:
node_modules ускоряет
сборку.Mithril-проекты выигрывают от политики «каждый pull request должен проходить CI». Это обеспечивает:
В CI-логах необходимо отслеживать:
Эти метрики позволяют вовремя оптимизировать процесс разработки и повышают надёжность Mithril-приложений.