Elephize предоставляет command-line утилиту для упрощения использования и интеграции с другими инструментами. Примеры и флаги далее даны в предположении, что elephize установлена глобально (npm install -g @vkontakte/elephize) либо используется из скрипта в вашем package.json.
Запустить с конфиг-файлом .elephizerc:
elephize -c .elephizercПосле выполнения команды по указанному пути будет создан bootstrap-файл, который необходимо подключить единожды в ваш проект через require_once (это необходимо для подключения файлов стандартной библиотеки), а также будут созданы транспилированные файлы.
Флаги командной строки:
| Полный | Краткий | Параметр | Тип | Пояснение |
|---|---|---|---|---|
--bail |
-e |
none/warn/error | string | Задает уровень ошибок, при котором процесс завершится с ошибочным кодом возврата. По умолчанию - none |
--baseDir |
-b |
DIR | string | Задает базовый путь проекта для корректного разрешения относительных путей. |
--config |
-c |
FILE | string | Путь до файла конфигурации, по умолчанию .elephizerc. |
--encoding |
-l |
ENC | string | Задает кодировку для php-файлов. Полезно в случае, если ваш бэкенд использует не utf8 кодировку. |
--help |
-h |
bool | Показать инструкцию | |
--noZap |
-z |
bool | Отключает unused code elimination | |
--outDir |
-d |
DIR | string | Определяет путь, по которому будут созданы сгенерированные php-файлы |
--output |
-o |
FILE | string | Определяет место, куда записать bootstrap-файл. Если файл уже существует, он будет перезаписан. По умолчанию выводит в stdout. |
--quiet |
-q |
bool | Не показывать ошибки транспиляции. | |
--rootNs |
-n |
NAME | string | Задает namespace для сгенерированных классов. По умолчанию - `\VK\Elephize' |
--src |
-s |
GLOB | string | Список точек входа, которые нужно обработать. Принимает quoted glob в качестве параметра (например '*.entry.ts') |
--verboseTypehints |
-t |
bool | Показывать подробные отладочные сообщения от подсистемы вывода типов | |
--verboseUsage |
-u |
bool | Показывать подробные отладочные сообщения от подсистемы unused code elimination | |
--verbose |
-v |
bool | Показывать подробные сообщения от транспилятора. | |
--watch |
-w |
bool | Запустить elephize в режиме инкрементальной перекомпиляции изменяющихся файлов (watch mode) |
Файл конфигурации представляет из себя обычный JSON-файл. Состав файла конфигурации полностью совпадает с флагами командной строки (ключом объекта должно быть полное наименование параметра). Пример можно посмотреть в файле elephizerc.example.json или в папке demo.
Дополнительные параметры для файла конфигурации:
| Ключ | Тип | Пояснение |
|---|---|---|
aliases |
{ [string]: string } | Алиасы путей для сгенерированных файлов. Полезно в тех случаях, когда на бэкенде файлы нужно разложить иначе, чем на фронтенде. |
ignoreImports |
string[] | Список глобов, путей к модулю или идентификатов модулей, которые следует проигнорировать. |
replaceImports |
{ [string]: ReplaceRule } | Правила замены имплементации для указанного в ключе идентификатора модуля или пути к модулю. |
tsPaths |
{ [string]: string[] } | В этот параметр должен передаваться тот же объект, что и в параметре paths в вашем tsconfig. Параметр нужен для поддержки сокращенных путей в import-конструкциях. |
hooksIncludePath |
string | Путь к файлу, содержащему код хуков обхода AST |
sourceExtensions |
string[] | Список расширений файлов, которые нужно обрабатывать. По умолчанию: ['.ts', '.tsx', '.js', '.jsx'] |
Формат типа ReplaceRule следующий:
{
// ...
'replacedModule': {
implementationPath: '../../Impl.php', // string
implementationClass: 'ImplModule', // string
},
'../../path/to/replacedModule': {
implementationPath: '../../Impl2.php', // string
implementationClass: 'Impl2Module', // string
},
// ...
}
В папке demo можно найти минимальный готовый сконфигурированный проект, который удобно взять за основу.