Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.0.0 #22

Merged
merged 20 commits into from
Feb 6, 2024
Merged

v3.0.0 #22

merged 20 commits into from
Feb 6, 2024

Conversation

dewolixgit
Copy link
Contributor

@dewolixgit dewolixgit commented Jan 31, 2024

Что сделано

В данном PR представлены наработки по трём другим PR:

Соответствующие изменения отражены в CHANGELOG.md.

Что было сделано помимо перечисленного выше:

  • Удалён тип InitializeVkAppResponseType, описывавший результат, возвращаемый функцией initializeVkApp. Однако функция initializeVkApp удалена
  • Добавлен комментарий для vkErrorTypes, немного обновлён readme

Проверка работоспособности

Далее будет описан процесс проверки работоспособности внесённых изменений, чтобы, если вдруг что, ревьюер мог указать на возможную ошибку процесса проверки, а также использовать это описание как руководство по повторной проверки работоспособности библиотеки. Процесс проверки основывается на статье в базе знаний "Разработка библиотек с помощью npm-link". Проверка проводилась на маке, с нодой версии 18.19.0, yarn версии 1.22.19. Для проверки работоспособности использовался тестовый проект. Чтобы не оглашать лишний раз проект, условимся, что он находится по пути ~/Desktop/kts-projects/s-front.

Сначала в тестовом проекте была обновлена библиотека mediaproject-utils до пятой версии, чтобы проверить предварительно её, ведь она обновилась совсем недавно, а ещё затрагивает window, что может вызвать проблемы по всему проекту. Действительно, после обновления mediaproject-utils, теряются типы некоторых полей в window, а ещё начинает ругаться mediaproject-vk (которая ещё не залинкована через npm link). Ругается на отсутствие функции initializeAppParams в обновлённой версии mediaproject-utils (скриншот ниже). Это ожидаемо, ведь функция была специально удалена, поэтому переходим к линкованию mediaproject-vk с уже обновлённой mediaproject-utils.

image

  1. Обновим зависимости, так как обновилась mediaproject-utils. Из папки проекта вызвать: yarn install.
  2. Собираем билд библиотечки. Из папки проекта вызвать: yarn build. Результат окажется в папке dist.
  3. Уносим папку dist и package.json в отдельный каталог. В моём случае это ~/test-vk. Далее буду называть это папкой библиотеки, а саму такую библиотеку — тестовой библиотекой.
  4. В папке библиотеки нужно установить зависимости, то есть вызвать: yarn install.
  5. Заметим, что mediaproject-vk (тестовая библиотека) внутри себя использует mediaproject-utils, а та, в свою очередь, ожидает увидеть в зависимостях проекта axios. Ожидаемо, mediaproject-vk (тестовая библиотекаа) не подгружает axios и даже не ожидает его в peer dependencies, но axios в peer deps ожидает mediaproject-utils. То есть нужно создать такую ситуацию, когда бы тестовая библиотека (mediaproject-vk) использовала один и тот же с тестовым проектом экземпляр mediaproject-utils. Вспомним, что в тестовом проекте mediaproject-utils уже обновлена до той же версии, что и в тестовой библиотеке (mediaproject-vk) — до пятой версии. Такую ситуацию разделения одного экземпляра mediaproject-utils можно достичь с помощью линкования тествовой библиотеки (mediaproject-vk) к экземпляру mediaproject-utils из тестового проекта. Так, учитывая, что тестовый проект находится по пути ~/Desktop/kts-projects/s-front, тестовая библиотека по пути ~/test-vk, нужно в папке с тестовой библиотекой выполнить: npm link ~/Desktop/kts-projects/s-front/node_modules/@ktsstudio/mediaproject-utils. Пропуск этого шага вызовет у вас ошибку: mediaproject-utils будет ругаться на отсутствие внутри своих node_modules axios, затем пойдёт искать axios в mediaproject-vk (тестовой библиотеке), не найдёт и откажется работать. Расписал так подробно, потому что у самого сначала возникали сомнения в том, действительно ли такое линкование имитирует реальную ситуацию при использовании зарелиженных библиотек. Вроде имитирует
  6. Далее будет сделан шаг для избавления от ошибки на скриншоте ниже. Здесь это тоже решается тем, что к тестовой библиотеке линкуется экземпляр реакта из тестового проекта. Так, тестовая библиотека и тестовый проект будут использовать один и тот же экземпляр реакта — как бы это происходило и в реальной ситуации. Для этого нужно в папке с тестовой библиотекой (~/test-vk) выполнить две команды: npm link ~/Desktop/kts-projects/s-front/node_modules/react и npm link ~/Desktop/kts-projects/s-front/node_modules/@types/react

image

  1. Теперь нужно подготовить экземпляр тестовой библиотеки для линкования. Выполняем в папке с тестовой библиотекой: yarn link.
  2. Теперь переходим в тестовый проект и выполняем в нём следующую команду: yarn link "@ktsstudio/mediaproject-vk". Поздравляю! Теперь у вас поломалось ещё больше: это потому что типы полей в window поменялись ещё больше, сигнатуры функций поменялись и так далее. Так, вам нужно починить отвалившиеся места. Если вы тестируете в миниаппе (скорее всего, это так) и ваш миниапп использует по-старинке обращение к window, то придётся либо восстанавливать запись параметров приложения в window, либо, например как следует из нынешнего тренда, заводить стор с параметрами приложения и инициировать параметры там. Я выбрал запись в window, чтобы изменить как можно меньшее количество кода в проекте (то есть по больше мере index.tsx). Если вам не хочется самим подстраивать ваш проект под изменения в библиотеках, обратитесь к автору PR (тг dewolix) за кодом проекта, хотя перед отправкой на просмотр он всё равно скинет архив в чат.

Когда закончите с проверкой, не забудьте сделать следующее:

  1. Отвяжите тестовый проект от тестовой библиотеки. В папке с тестовым проектом выполните: yarn unlink "@ktsstudio/mediaproject-vk", затем yarn install --force
  2. Удалите линки экземпляров mediaproject-utils, react и @types/react. В папке с тестовой библиотекой: npm uninstall -g react @types/react @ktsstudio/mediaproject-utils
  3. Удалите линк mediaproject-vk. В папке с тестовой библиотекой выполните: yarn unlink

Примечание

Было обнаружено, что yarn ts-check ругается на tsconfig (скриншот ниже), но, так как он это делает и в мастер ветке (вроде) (а ещё не хотелось на это время тратить), править не стал.
image

@dewolixgit dewolixgit marked this pull request as ready for review January 31, 2024 09:22
src/setVkViewSettings.ts Outdated Show resolved Hide resolved
src/checkVkPlatform.ts Outdated Show resolved Hide resolved
@AliceSitedge AliceSitedge merged commit 0fa9495 into master Feb 6, 2024
@qpounodb qpounodb deleted the release-3.0.0 branch June 13, 2024 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants