@vkontakte/vkui-codemods v1.0.0
VKUI Codemods
Чтобы упростить переход на новую мажорную версию, можно воспользоваться инструментом по автоматической миграции ваших компонентов.
Для начала обновите ваше приложение до необходимой мажорной версии (например, v7) в соответствии с требованиями вашего пакетного менеджера и среды.
Обратите внимание, минимальная поддерживаемая версия React
v18.2.0.Пока для перевода доступны только
Typescript-файлы (.ts/.tsx).Из-за особенностей работы
jscodeshiftпосле применения миграции у вас могут появиться лишние скобки вокругJSX-элементов, пожалуйста, запуститеprettier, чтобы отформатировать код в соответствии с вашими настройками.Если вы хотите обновиться с
v5наv7вам необходимо будет обновиться сначала наv6, а затем наv7, запустив скрипт последовательно для каждой из версий.
Запуск
Перейдите в директорию с исходниками вашего проекта (обычно это src/) и запустите следующую команду:
npx @vkontakte/vkui-codemodsИнструмент представляет собой консольное приложение, с помощью которого вы можете выбрать необходимые изменения и применить их. Доступны следующие команды:
$ npx @vkontakte/vkui-codemods --help
Usage: @vkontakte/vkui-codemod [codemod-names...]
Arguments:
codemod-names which codemods should be applied
Options:
-V, --version output the version number
-l --list list available codemods
--all apply all available codemods
-tv --transforms-version <transformsVersion> vkui major version transforms (available versions: "6", "7")
-p --path [paths...] file paths where codemods need to apply (space separated list), default: current
directory
--input-file <file> apply codemods only to file/directory listed in the file
--log-file <file> log migration instructions with required manual changes to the file instead of
the console
--dry-run no changes are made to files
--ignore-config <config> ignore files if they match patterns sourced from a configuration file (e.g. a
.gitignore)
--debug all logs are shown
--alias <alias> in case you have adapter over original library (default: "@vkontakte/vkui")
-h, --help display help for command-tv (--transforms-version)
Если приложение запустить без опции -tv (--transforms-version), скрипт попытается автоматически определить версию, на которую необходимо мигрировать. Если этого сделать не удалось - нужно будет выбрать версию из предложенного списка.
--all
При запуске приложения без аргументов будет предложено выбрать одну или несколько имеющихся миграций (их название отражает название компонента, к которому будет применено изменение). Если вам необходимо применить все имеющиеся миграции, запустите команду с опцией --all:
npx @vkontakte/vkui-codemods --all--ignore-config <file>
Если вы хотите исключить некоторые файлы или директории из обработки, то временно создайте файл (по примеру .gitignore) с перечисленными исключениями в папке:
npx @vkontakte/vkui-codemods --all --path src --ignore-config "./.codemodignore"// .codemodignore
MyBeautifulComponentToIgnore.tsx
directoryToIgnore/Приведенная выше команда применит все codemods в директории src (находится в корне текущей директории), игонорируя файл MyBeautifulComponentToIgnore.tsx и директорию directoryToIgnore, указанные в .codemodignore (находится в корне текущей директории).
--log-file <file>
Есть вероятность, что применить автоматические миграции не представляется возможным. В таком случае приложение выведет в консоль подсказку, какие изменения необходимо внести вручную. Этих изменений может быть большое количество, для удобства можно воспользоваться опцией --log-file <file>, тогда все инструкции будут записаны в указанный файл (если его не существует, то он будет создан автоматически).
--input-file <file>
Если вы хотите перечислить файлы и директории, которые нужно включить в обработку, в отдельном конфигурационном файле, это можно сделать, указав опцию --input-file <file>:
// .input-file
MyBeautifulComponent.tsx
src/components--alias
Обратите внимание, если вы используете собственный адаптер над библиотекой
VKUIи делаете ре-экспорт существующих компонентов, то можете воспользоваться опцией--aliasдля указания правильного пути.
npx @vkontakte/vkui-codemods --all --alias "@myscope/VKUIFake"Примеры
Представленный ниже скрипт позволит запустить все имеющиеся миграции в файлах App.tsx и Main.tsx в папке src:
npx @vkontakte/vkui-codemods --path src/App.tsx src/Main.tsx --allСледующий скрипт запустит миграции компонентов Flex и Separator при обновлении на версию VKUI v7 в текущей директории:
npx @vkontakte/vkui-codemods flex separator -tv 71 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago