Для корректной работы проекта на Inferno в системе Continuous Integration (CI) необходимо создать стабильное и повторяемое окружение. Обычно используют контейнеры Docker или виртуальные среды CI-провайдеров (GitHub Actions, GitLab CI, Jenkins).
Ключевые элементы окружения:
package-lock.json или
yarn.lock).node_modules и файлы lock.Пример конфигурации для GitHub Actions:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Cache node modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
- run: npm install
- run: npm run build
Inferno использует виртуальный DOM и компиляцию JSX в обычные функции JavaScript. Для CI важно настроить сборку так, чтобы ошибки компиляции останавливались на раннем этапе.
Основные шаги сборки:
Пример скриптов в package.json:
{
"scripts": {
"build": "vite build",
"lint": "eslint src --ext .js,.jsx",
"test": "vitest run"
}
}
Тестирование в CI критически важно для предотвращения регрессий при изменениях UI. Для Inferno можно использовать Vitest, Jest или Testing Library.
Типы тестов:
Пример конфигурации Vitest:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
environment: 'jsdom',
coverage: {
provider: 'c8',
reporter: ['text', 'json', 'html']
}
}
});
Автоматическая проверка стиля кода позволяет поддерживать единообразие. Для Inferno-проектов используют ESLint с плагинами для JSX и React-подобных синтаксисов.
Пример конфигурации ESLint:
{
"extends": ["eslint:recommended", "plugin:jsx-a11y/recommended"],
"parserOptions": {
"ecmaVersion": 2022,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"no-unused-vars": "warn",
"react/jsx-uses-react": "off"
}
}
После успешной сборки и прохождения тестов, CI может автоматически деплоить проект. Возможные варианты:
Пример шага деплоя на GitHub Actions для статического сайта:
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
Оптимизация CI включает кэширование не только
node_modules, но и:
dist или
.vite).Для больших проектов рекомендуется настроить уведомления о состоянии CI:
Эти подходы позволяют выстроить стабильный и предсказуемый процесс Continuous Integration для проектов на Inferno, минимизируя риск регрессий и ускоряя выпуск новых версий.