Утилита для разработки приложений на фреймворке Wasaby.
npm install git+https://git.sbis.ru/saby/wasaby-cli.git#rc-[version] --save-dev
Команды передаются первым аргументом, далее параметры.
npx wasaby-cli command --arg1 --arg2
Параметры можно передавать 3 способами, варианты указаны в порядке приоритета:
- Командной строкой аргументом через --
- Описать отдельным объектом в json файле и передать путь до него через параметр --config
- Описать параметры в секции wasaby-cli вашего package.json файла
- consoleLevel {String} - Выставляет уровень логирования в для вывода в консоль. Не затрагивает запись логов в файл. Варианты значений:
- error - Только ошибки.
- info - Только ошибки и информационные логи. Значение по умолчанию.
- debug - Выводить все логи.
- artifactsDir {String} - Путь до папки с артефактами. Туда складываются все логи и результаты тестов и по умолчанию выгружается исходный код. По умолчанию "./wasaby-cli_artifacts".
Выкачивает репозитории с модулями необходимыми для сборки проекта.
- store {String} - Папка куда будет выкачен исходный код. По умолчанию "./store".
- rc {String} - Имя ветки которая будет использоваться как дефолтная, по умолчанию берется из параметра version в package.json
- rep {String[]} - Имена репозиториев. Их модули, будут считаться корневыми в проекте.
- modules {String[]} - Имена модулей, которые будут корневыми в проекте.
Компилирует модули проекта.
- store {String} - Путь хранилища исходного кода. По нему строиться дерево зависимостей. По умолчанию "./store".
- rep {String[]} - Имена репозиториев. Их модули будут считаться корневыми в проекте.
- modules {String[]} - Имена модулей, которые будут корневыми в проекте.
- workDir {String} - Папка куда будет собран проект. По умолчанию "./application".
- builderCache {String} - Папка кеша сборщика. По умолчанию "./build-ui".
- copy {Boolean} - Копировать ресурсы, по умолчанию создаются симлинки.
- watcher {Boolean} - Запустить отслеживания изменений в файлах для пересборки их на лету.
- hotReload {Boolean} - Запустить сервер hotReload-а и отслеживания изменений в файлах.
- hotReloadPort {Number} - Порт на котором будет поднят сервер для HotReload-а. Если порт будет занят сгенерируется другой.
- release {Boolean} - Собрать стенд в релиз режиме, собрать пакеты и минифицировать ресурсы.
- localization {String[]} - Список кодов доступных локалей. Первая локаль из списка будет дефолтной. Пример кода локали en-US.
- logLevel {String} - Уровень логирования для Builder. По умолчанию 'info'.
- umd {Boolean} - Собирать в UMD. По умолчанию
false
, т.е. сборка в AMD. - inlineSourceMaps {Boolean} - Добавлять source map при сборке. По умолчанию
false
.
Запускает юнит-тесты проекта.
При сборке проекта обязательно должны использоваться флаги
copy
иumd
. Подсистемы:
- store {String} - Путь до хранилища исходного кода. По нему строиться дерево зависимостей. По умолчанию "./store".
- workDir {String} - Папка, где искать модули с юнит-тестами. По умолчанию "./application".
- rep {String[]} - Имена репозиториев. Их модули будут протестированы.
- modules {String[]} - Имена модулей, которые надо протестировать.
- grep {String} - Параметр для Mocha. Запустить тесты соответствующие регулярному выражению.
- testPathPattern {String} - Параметр для Jest. Маска для пути по которой будут запущены файлы с тестами.
- testNamePattern {String} - Параметр для Jest. Маска для имени по которой будут запущены тесты.
- server {Boolean} - Запускает сервер для юнит-тестов, сами юниты-тесты не выполняются.
- coverage {Boolean} - Сгенерировать отчет покрытия.
- error - Только ошибки.
- info - Только ошибки и информационные логи. Значение по умолчанию.
- coveredModules {String[]} - Параметр для Mocha. Имена модулей, по которые надо построить покрытие. По умолчанию все модули, от которых зависит модуль с тестами.
Запускает браузерные тесты проекта. Подсистемы:
- store {String} - Путь до хранилища исходного кода. По нему строиться дерево зависимостей. По умолчанию "./store".
- workDir {String} - Папка, где искать модули с тестами. По умолчанию "./application".
- rep {String[]} - Имена репозиториев. Их модули будут протестированы.
- modules {String[]} - Имена модулей, которые надо протестировать.
- testPathPattern {String} - Маска для пути по которой будут запущены файлы с тестами.
- testNamePattern {String} - Маска для имени по которой будут запущены тесты.
- waitForTimeout {Number} - Таймаут для всех команд waitForXXX. По умолчанию 5 секунд.
- mochaTimeout {Number} - Максимально допустимое время выполнения теста. По умолчанию отключён.
- maxInstances {Number} - Количество одновременно обрабатываемых тестовых файлов. По умолчанию 1.
- exclude {String[]} - Полные имена тестов которые надо исключить.
- include {String[]} - Полные имена тестов которые надо запустить.
- onlyFailed {Boolean} - Запустить только упавшие тесты. Если отчёта с предыдущего запуска нет, запустит все.
- logLevel {String} - Уровень логирования для WebDriverIO.
- error - Только ошибки. Значение по умолчанию.
- info - Только ошибки и информационные логи.
Запускает демо стенд на express. Предварительно запускает команду buildDemoIndex Правила оформления модуля с демо примерами.
- workDir {String} - Папка со скомпилированным проектом. Она будет использовать как статика сервера. По умолчанию "./application".
- expressRoute {Object} - Объект содержащий пути до пользовательских роутингов для express.
- https {Boolean} - Включает https протокол для стенда.
- browserCache {Boolean} - Включает кеширование браузера для стенда. Чтобы кеширование заработало для https в chrome сертификат придётся добавить в доверенные. https://bugs.chromium.org/p/chromium/issues/detail?id=110649#c8
Настраивает окружения для работы с TypeScript. Устанавливает ESLint, Stylelint, Prettier. Подсистемы:
- store {String} - Путь до хранилища исходного кода, по нему строиться секция paths в tsconfig. По умолчанию "./store".
Инициализирует локальные гит хуки от wasaby-cli. Доступно только, если wasaby-cli используется в репозитории. Подсистемы:
Запускает обработчик для pre-commit хука. Предварительно запускает команду initTSEnv Подсистемы:
- preCommitHooks {String[]} - Список обработчиков, которые надо запустить. Встроенные обработчики:
- ESLint - Запускается по файлам с расширениями .ts, .js, .tsx, .jsx.
- Stylelint - Запускается по файлам с расширениями .css, .less.
- Prettier - Запускается по файлам с расширениями .ts, .js, .tsx, .jsx, .css, .less.
Добавляет в .gitignore пути по умолчанию для генерируемых папок и файлов. Если файла нет, создаст. Если wasaby-cli исполняется в репозитории, то команда запускается автоматически при запуске любой команды.
- gitignorePath {String} - Папка в которой искать .gitignore. По умолчанию текущий рабочий каталог.
Выполняет команды loadProject, buildProject, initTSEnv, запускает демо-стенд и открывает разводящую страницу.
Создаёт новый модуль.
- path {String} - Путь до создаваемого модуля.
- type {String} - Тип модуля. Варианты:
- ui - Интерфейсный модуль. Значение по умолчанию.
- test - Модуль c тестами.
- environment {String} - В каком окружении запускать тесты.
- NodeJS - Тесты запускаются в окружении Node.js(Фреймворк Jest). Значение по умолчанию.
- Browser - Под тесты запускается честный браузер(Фреймворк WebDriverIO).
Генерирует разводящую страницу для демо-примеров. Правила оформления модуля с демо примерами.
- workDir {String} - Папка со скомпилированным проектом. В ней будут искать модули с демо примером. По умолчанию "./application".
- modules {String[]} - Для каких модулей построить разводящую. По умолчанию строиться для всех демо модулей в проекте.
Репозитории для клонирования определяются по зависимостям модулей, описанных в s3mod файлах.
npx wasaby-cli loadProject
РЦ ветка на которую переключатся все склонированные репозитории возьмется из параметра version, вашего pakage.json если нужно обновить, какой либо репозитоий на специфическую ветку, то передаем параметр --[name]=my/branch, где [name] надо заменить на название, нужного репозитория, его можно посмотреть в package.json файле, параметр name.
npx wasaby-cli loadProject --rmi=my/branch
Для того что бы добавить прикладные репозитории в сборку нужно в секции wasaby-cli вашего package.json файла, добавить
параметр repositories, можно добавлять как ссылку на гит так и путь до своего локального репозитория, так же можно
передать путь до платформенного репозитория, по умолчанию они описаны в конфиге wasaby-cli.
{
"wasaby-cli": {
"repositories": [
"https://git.sbis.ru/sbis/name.git",
"https://git.sbis.ru/sbis/name2.git#rc-22.1000",
"../name3",
"../sbis3-ws"
]
}
}
Приложение собирается через Builder, для запуска сборки выполните команду.
npx wasaby-cli buildProject
В сборку приложения попадают все модули репозитория, ограничить набор модулей можно указав параметр modules в секции wasaby-cli вашего package.json
{
"wasaby-cli": {
"modules": ["Env", "EnvTest"]
}
}
По умолчанию проект собирается в папку application, это можно изменить, создав секцию wasaby-cli в package.json
{
"wasaby-cli": {
"workDir": "path/to/application"
}
}
Можно собрать приложения используя свой локальный репозиторий вместо того что скачан в store. Для этого необходимо передать путь до внешнего репозитория используя параметр --[name]=path/to/rep, где [name] надо заменить на название, нужного репозитория, название формируется из url репозитория. Берётся путь и все слешы заменяются на нижнее подчёркивание. https://github.com/saby/ui, имя для него saby_ui.
npx wasaby-cli buildProject --saby_ui=../path/to/ui
Так же можно запустить вотчер.
npx wasaby-cli buildProject --watcher
Юнит тесты ищутся в модулях у которых в файле описания(*.s3mod) есть тег <unit_test/>. Файлы содержащие юниты должны называться *.test.js
-
Запуск тестов под нодой
-
Отчет в консоли
npx wasaby-cli runUnitTests --node --report=console
-
Отчет в файле, по умолчанию в папке ./wasaby-cli_artifacts/UnitTest/%name%/%environment%/result/*.xml
npx wasaby-cli runUnitTests --node
-
Запустить только нужные тесты
npx wasaby-cli runUnitTests --node --grep="test suite name"
-
-
Запуск тестов в браузере
-
Запустить сервер
npx wasaby-cli runUnitTests --server
-
Отчет в файле, по умолчанию в папке ./wasaby-cli_artifacts/UnitTest/%name%/%environment%/result/*.xml
npx wasaby-cli runUnitTests --browser
-
По умолчанию стенд запускается на 1024 порту, если он занят то запустится на другом свободном, в консоли будет ссылка http://localhost:[port]
npx wasaby-cli -startServer
Порт, можно задать в package.json, но если он занят сервер запустится на другом свободном.
{
"wasaby-cli": {
"port": 777
}
}
Так же можно задать пользовательские роутинги для демо сервера.
{
"wasaby-cli": {
"expressRoute": {
"/service": "service.js"
}
}
}
js модуль должен экспортировать express.Router
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
});
module.exports = router;
-
Имя TS-файла контрола должно либо совпадать с именем папки, в которой он расположен, либо соответствовть имени Index.ts.
-
В WML-файле контрола не должны использоваться шаблон веб-страницы SbisEnvUI.Bootstrap и контрол маршрутизации Router/router:Reference.
-
Исходные файлы контролов запрещается размещать в корне интерфейсного модуля — только в отдельных папках.
- Examples-demo
- Button
- Button.ts
- Button.less
- Header
- Index.ts
- Examples-demo.s3mod
- Button
- Examples-demo
Подготоваливает окружение: копирует tsConfig, esLint.
npx wasaby-cli initTSEnv
Если вы только что создали новый проект, то вам необходимо создать интерфейсный модуль, в нашей системе сборки это папка и одноименный файл в xml формате с раширением s3mod
npx wasaby-cli createModule --path=client/MyModule