leomax
Фреймворк для разработки, сборки, тестирование, линтинга и деплоя js-приложений
Сейчас - TypeScript
В данный момент происходит переписывание и улучшение идей модуля на TypeScript.
Установка
Глобально (рекомендуется)
sudo npm i -g leomax
Глобально (Windows)
npm i -g leomax
Локально
npm i -S leomax
В случае установки локально, пишите команды в блоке scrips
в package.json
Начало работы
Инициализация проекта
leomax init
Генерация шаблона
Используйте, только если работаете с пустым проектом
leomax generate react --isomorphic --appolo --graphql
Цикл разработки
Команды npm *
и npm run *
доступны только после инициализации / записи в scripts
Перечисленные для каждого этапа команды являются взаимозаменяемыми
- Запуск режима разработчика
npm start
leomax dev
leomax start
- Внесение изменений
npm run save -- -m "update..."
leomax save -m "update..."
leomax commit -m "update..."
- Проверка стиля кода
npm run lint
npm pretest
leomax lint
- Тестирование кода
npm test
leomax test
- Публикация
npm run publish
leomax publish
leomax deploy
Что и как должно работать
Инициализация
leomax init
- Создает и сортирует package.json, добавляет туда нужные скрипты
- Создает .leomax.json
- Создает *ignore-файлы, babelrc, editorconfig, README и т.п.
- Надо бы:
- Глубокая проверка package.json и .leomax.json (проверить скрипты, корректность, что-то изменить/добавить, если надо), а не только проверка на наличие файла
- Гораздо больше кастомизации при вызове
leomax init
- Инициализировать минимальную структуру в зависимости от настроек (создать несколько файлов, директорий и т.п.)
Линтинг
leomax lint
- Проверяет код в соответствии с
eslint-config-leomax
или
.eslintrc
/eslintrc.json
, если они есть (leomax init
должен создавать.eslintrc
) - Исправляет, что может исправить (опечатки и т.п.)
- Надо бы:
- Кастомизация отображения результатов, исправления ошибок, игнорирования предупреждений и т.п.
- Брать настройки из
.leomax.json
- CLI-опции с теми же настройками (перекрывает
.leomax.json
)
Архитектура приложения
Святая святых. От выбранной архитектуры (типа) приложения зависит то, как Вы будете его разрабатывать. Каждая архитектура имеет определенные особенности в конфигурации, возможностях и требованиях к разработчику.
Фреймворк должен подстраиваться под пользователя, но тем не менее он будет предъявлять некоторые трябования в зависимости от выбранной архитектуры.
- Общие требования
- В случае изменения названия директории с исходниками, требуется
отразить это изменение в конфиге (
path.src
) - Каждый корневой компонент (который включает в себя все остальные)
должен быть обернут в Document (
leomax/lib/Document.js
), который реализует изоморфную генерацию html-страницы.
- В случае изменения названия директории с исходниками, требуется
отразить это изменение в конфиге (
- Лендинг (Статичная страница) [в разработке]
- Простейшая архитектура, ограничена лишь общими требованиями
- Имеется только одна точка входа (по-умолчанию
./src/index.js
) - Имеется только одна директория сборки (по-умолчанию
./dist
) - Серверная часть отстутствует
- В сборку добавляется сгенерированный
index.html
- Single Page Application (SPA) [в планах]
- Наследует особенности от Лендинга
- Серверная часть опциональна. По-умолчанию включена.
- Server-side rendering (требует включенную серверную часть)
- Multi Page Application (MPA) [в планах]
- Наследует особенности от SPA
- Имеется несколько точек входа (как кастомизировать роутинг пока не придумал)
- Progressive Web Application (PWA) [в планах]
- Наследует особенности от SPA
- Агрессивное предпочтение кешированию
- Добавляется Service Worker (оффлайн/сетевой прокси)
- Имеется две точки входа: статичная общая часть и компонент для асинхронной загрузки контента
- Ленивый server-side rendering. Требует указание глобального
состояния (авторизация, роутинг без подгрузки, критичные для
отображения асинхронные части и т.п.). В случае его отсутствия
добавляет в сборку
index.html
.
Сборка
leomax build
МЕДЛЕННО.