Skip to content

saby/wasaby-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wasaby-cli

Утилита для разработки приложений на фреймворке Wasaby.

Установка wasaby-cli

npm install git+https://git.sbis.ru/saby/wasaby-cli.git#rc-[version] --save-dev

Запуск и параметры

Команды передаются первым аргументом, далее параметры.

npx wasaby-cli command --arg1 --arg2

Параметры можно передавать 3 способами, варианты указаны в порядке приоритета:

  1. Командной строкой аргументом через --
  2. Описать отдельным объектом в json файле и передать путь до него через параметр --config
  3. Описать параметры в секции wasaby-cli вашего package.json файла

Команды

Общие параметры

  • consoleLevel {String} - Выставляет уровень логирования в для вывода в консоль. Не затрагивает запись логов в файл. Варианты значений:
    • error - Только ошибки.
    • info - Только ошибки и информационные логи. Значение по умолчанию.
    • debug - Выводить все логи.
  • artifactsDir {String} - Путь до папки с артефактами. Туда складываются все логи и результаты тестов и по умолчанию выгружается исходный код. По умолчанию "./wasaby-cli_artifacts".

loadProject

Выкачивает репозитории с модулями необходимыми для сборки проекта.

Параметры:

  • store {String} - Папка куда будет выкачен исходный код. По умолчанию "./store".
  • rc {String} - Имя ветки которая будет использоваться как дефолтная, по умолчанию берется из параметра version в package.json
  • rep {String[]} - Имена репозиториев. Их модули, будут считаться корневыми в проекте.
  • modules {String[]} - Имена модулей, которые будут корневыми в проекте.

buildProject

Компилирует модули проекта.

Параметры:

  • 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.

runUnitTests

Запускает юнит-тесты проекта.

При сборке проекта обязательно должны использоваться флаги 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. Имена модулей, по которые надо построить покрытие. По умолчанию все модули, от которых зависит модуль с тестами.

runBrowserTests

Запускает браузерные тесты проекта. Подсистемы:

Параметры:

  • 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 - Только ошибки и информационные логи.

startServer

Запускает демо стенд на 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

initTSEnv

Настраивает окружения для работы с TypeScript. Устанавливает ESLint, Stylelint, Prettier. Подсистемы:

Параметры:

  • store {String} - Путь до хранилища исходного кода, по нему строиться секция paths в tsconfig. По умолчанию "./store".

initGitHooks

Инициализирует локальные гит хуки от wasaby-cli. Доступно только, если wasaby-cli используется в репозитории. Подсистемы:


runPreCommitHook

Запускает обработчик для pre-commit хука. Предварительно запускает команду initTSEnv Подсистемы:

Параметры:

  • preCommitHooks {String[]} - Список обработчиков, которые надо запустить. Встроенные обработчики:
    • ESLint - Запускается по файлам с расширениями .ts, .js, .tsx, .jsx.
    • Stylelint - Запускается по файлам с расширениями .css, .less.
    • Prettier - Запускается по файлам с расширениями .ts, .js, .tsx, .jsx, .css, .less.

updateGitignore

Добавляет в .gitignore пути по умолчанию для генерируемых папок и файлов. Если файла нет, создаст. Если wasaby-cli исполняется в репозитории, то команда запускается автоматически при запуске любой команды.

Параметры:


initDevEnv

Выполняет команды loadProject, buildProject, initTSEnv, запускает демо-стенд и открывает разводящую страницу.


createModule

Создаёт новый модуль.

Параметры:

  • path {String} - Путь до создаваемого модуля.
  • type {String} - Тип модуля. Варианты:
    • ui - Интерфейсный модуль. Значение по умолчанию.
    • test - Модуль c тестами.
  • environment {String} - В каком окружении запускать тесты.
    • NodeJS - Тесты запускаются в окружении Node.js(Фреймворк Jest). Значение по умолчанию.
    • Browser - Под тесты запускается честный браузер(Фреймворк WebDriverIO).

buildDemoIndex

Генерирует разводящую страницу для демо-примеров. Правила оформления модуля с демо примерами.

Параметры:

  • 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;      

Правила оформления модуля с демо примерами.

  1. Имя TS-файла контрола должно либо совпадать с именем папки, в которой он расположен, либо соответствовть имени Index.ts.

  2. В WML-файле контрола не должны использоваться шаблон веб-страницы SbisEnvUI.Bootstrap и контрол маршрутизации Router/router:Reference.

  3. Исходные файлы контролов запрещается размещать в корне интерфейсного модуля — только в отдельных папках.

    • Examples-demo
      • Button
        • Button.ts
        • Button.less
      • Header
        • Index.ts
      • Examples-demo.s3mod

Подготовка окружения

Подготоваливает окружение: копирует tsConfig, esLint.

npx wasaby-cli initTSEnv

Создать модуль

Если вы только что создали новый проект, то вам необходимо создать интерфейсный модуль, в нашей системе сборки это папка и одноименный файл в xml формате с раширением s3mod

npx wasaby-cli createModule --path=client/MyModule

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published