Jest: ☂️ Проблема с отслеживанием миграции TypeScript

Созданный на 5 февр. 2019  ·  69Комментарии  ·  Источник: facebook/jest

Эта проблема предназначена для отслеживания внутренней миграции Jest на TypeScript.

Процесс

Мы бы _любили_ получить помощь от сообщества здесь. Я составил список всех пакетов в этом репо ниже - не стесняйтесь заявлять о любых пакетах, которые не были заявлены, и отправлять PR о его переносе.

Список

| Имя пакета | Владелец задачи | PR | Статус | Примечания |
| --------------------------- | ------------- | ----- | ------- | -------------- |
| @jest/core | @SimenB | # 7998 | ОБЪЕДИНЕННЫЕ | |
| @jest/reporters | @loryman | # 7994 | ОБЪЕДИНЕННЫЕ | |
| @jest/transform | @SimenB | # 7918 | ОБЪЕДИНЕННЫЕ | |
| babel-jest | @SimenB | # 7862 | ОБЪЕДИНЕННЫЕ | |
| babel-plugin-jest-hoist | @ deneuv34 | # 7898 | ОБЪЕДИНЕННЫЕ | |
| babel-preset-jest | - | - | - | Не транспилировано |
| diff-sequences | @loryman | # 7820 | ОБЪЕДИНЕННЫЕ | |
| eslint-config-fb-strict | - | - | - | Не транспилировано |
| expect | @natealcedo | # 7919 | ОБЪЕДИНЕННЫЕ | |
| jest | @SimenB | # 8024 | ОБЪЕДИНЕННЫЕ | |
| jest-changed-files | @loryman | # 7827 | ОБЪЕДИНЕННЫЕ | |
| jest-circus | @ doniyor2109 | # 7916 | ОБЪЕДИНЕННЫЕ | |
| jest-cli | @SimenB | # 8024 | ОБЪЕДИНЕННЫЕ | |
| jest-config | @SimenB | # 7944 | ОБЪЕДИНЕННЫЕ | |
| jest-diff | @SimenB | # 7824 | ОБЪЕДИНЕННЫЕ | |
| jest-docblock | @SimenB | # 7836 | ОБЪЕДИНЕННЫЕ | |
| jest-each | @mattphillips | # 8007 | ОБЪЕДИНЕННЫЕ | |
| jest-environment-jsdom | @lirbank | # 8003 | ОБЪЕДИНЕННЫЕ | |
| jest-environment-node | @lirbank | # 7985 | ОБЪЕДИНЕННЫЕ | |
| jest-get-type | @SimenB | # 7818 | ОБЪЕДИНЕННЫЕ | |
| jest-haste-map | @jeysal | # 7854 | ОБЪЕДИНЕННЫЕ | |
| jest-jasmine2 | @ doniyor2109 | # 7970 | ОБЪЕДИНЕННЫЕ | |
| jest-leak-detector | @ r3nya | # 7825 | ОБЪЕДИНЕННЫЕ | |
| jest-matcher-utils | @SimenB | # 7835 | ОБЪЕДИНЕННЫЕ | |
| jest-message-util | @SimenB | # 7834 | ОБЪЕДИНЕННЫЕ | |
| jest-mock | @thymikee | # 7847 | ОБЪЕДИНЕННЫЕ | |
| jest-phabricator | @ r3nya | # 7965 | ОБЪЕДИНЕННЫЕ | |
| jest-regex-util | @loryman | # 7822 | ОБЪЕДИНЕННЫЕ | |
| jest-repl | @natealcedo | # 8000 | ОБЪЕДИНЕННЫЕ | |
| jest-resolve | @SimenB | # 7871 | ОБЪЕДИНЕННЫЕ | |
| jest-resolve-dependencies | @jeysal | # 7922 | ОБЪЕДИНЕННЫЕ | |
| jest-runner | @natealcedo | # 7968 | ОБЪЕДИНЕННЫЕ | |
| jest-runtime | @SimenB | # 7964 | ОБЪЕДИНЕННЫЕ | |
| jest-serializer | @thymikee | # 7841 | ОБЪЕДИНЕННЫЕ | |
| jest-snapshot | @ doniyor2109 | # 7899 | ОБЪЕДИНЕННЫЕ | |
| jest-util | @SimenB | # 7844 | ОБЪЕДИНЕННЫЕ | |
| jest-validate | @SimenB | # 7991 | ОБЪЕДИНЕННЫЕ | |
| jest-watcher | @SimenB | # 7843 | ОБЪЕДИНЕННЫЕ | |
| jest-worker | @SimenB | # 7853 | ОБЪЕДИНЕННЫЕ | |
| pretty-format | @SimenB | # 7809 | ОБЪЕДИНЕННЫЕ | |

После переноса всех пакетов мы можем начать перенос наших интеграционных тестов. В зависимости от того, как идет этот переход, мы можем отслеживать это и в этом выпуске, или мы можем отслеживать его отдельно позже.

Как

Порядок пакетов для переноса

Следует отметить, что поскольку это репо является монорепозиторием, у нас есть зависимости между пакетами. Итак, мы должны сначала перенести листовые пакеты (без зависимостей), а затем пройти вверх по дереву зависимостей, пока все не будет перенесено. Это означает, что jest-cli будет последним перенесенным пакетом.

Вы можете использовать yarn, чтобы выяснить, какие пакеты зависят от внутренних: yarn --silent workspaces info . Это выведет объект JSON всех пакетов в рабочей области. Пример выглядит так:

{
  "babel-jest": {
    "location": "packages/babel-jest",
    "workspaceDependencies": ["babel-preset-jest"],
    "mismatchedWorkspaceDependencies": []
  }
}

Здесь самое интересное - workspaceDependencies . Если этот массив пуст, это идеальный пакет для начала миграции. Если он _не_ пуст, вам нужно убедиться, что каждый пакет, указанный в массиве, уже был перенесен.

Шаги

  1. Заявить пакет в этом выпуске
  2. Скопируйте tsconfig.json из уже перенесенного пакета

    1. Если переносимый пакет имеет зависимости от другого пакета в этом репо, используйте references

  3. Если файл типа существует в types/ в корне репозитория пакета, переместите его в каталог src пакета как файл с именем types.ts
  4. Добавьте "types": "build/index.d.ts" в package.json ниже main
  5. Переименуйте все файлы с расширением js в ts (или tsx если в них есть jsx), исправляя ошибки типа по ходу
  6. Убедитесь, что тесты и пух (включая поток) прошли
  7. Убедитесь, что JS после компиляции по сути такой же, как и до миграции *
  8. Откройте PR

Для сборки вы можете запустить yarn build или yarn watch в корне репозитория.

Вы можете посмотреть мой PR для pretty-format чтобы увидеть, как может выглядеть миграция.

Вы можете использовать flow-to-typescript для помощи в миграции. Однако, поскольку синтаксис между Flow и Typescript очень похож, я лично использовал его только для файлов определения типа в types - для обычных исходных файлов было проще переименовать файл в ts(x) и исправить синтаксические ошибки, которые мне показала моя IDE.

*) Сделайте это, сравнив git diff s до и после миграции (также, пожалуйста, включите эту разницу в PR после ее открытия)

  1. запустить yarn build на master
  2. git add -f packages/MY_PACKAGE/build*
  3. git commit -m 'before migration'
  4. запустите yarn build в своей ветке с миграцией
  5. rm packages/MY_PACKAGE/build*/**/*.ts packages/MY_PACKAGE/build*/**/*.map
  6. git add -f packages/MY_PACKAGE/build*
  7. git commit -m 'after migration'
  8. git diff master packages/MY_PACKAGE/build*
  9. В macOS (вероятно, существуют аналогичные инструменты в Linux и Windows) это можно скопировать и включить в PR git --no-pager diff master packages/MY_PACKAGE/build* | pbcopy . Вставьте это в забор кода с синтаксисом diff в PR.

На что следует обратить внимание во время миграции

Конфигурация не допускает неявного any

Текущая настройка с потоком позволяет это - просто добавьте явный any (или более строгий тип, если можете) в этих случаях. Если возможно, используйте unknown вместо any .

Модуль экспортирует CommonJS

Преобразовать require в import Используйте exports = для замены modules.exports - это позволяет TypeScript понимать экспорт. Мы включаем плагин babel, который переводит это в module.exports для распределенного кода (и тестов).

Возможные ошибки

Возможно, больше, но я запишу те, о которых знаю

  • В настоящее время Jest импортирует довольно много типов из types/ в корне этого репо, что позволяет нам использовать типы в пакетах без зависимости от них (обычно модули будут зависеть от types/Config что позволяет им иметь ProjectConfig качестве аргументов). Поскольку мы будем распространять типы, нам нужно, чтобы эти зависимости были явными.

    • Решение в этом конкретном случае, вероятно, состоит в том, чтобы создать отдельные пакеты, в которых есть все, что есть сегодня в jest-config , кроме конфигураций по умолчанию (чтобы он мог отбросить babel-jest , тестовые среды и т. Д.)

  • Точно так же types/TestResult используется jest-jasmine2 , jest-circus и jest-cli (для репортеров). Нам нужно выяснить, как эффективно разделить этот тип между пакетами.

Еще одна идея решения проблемы «разделения типов» - использовать отдельный проект jest-types , _just_ типы, общие для модулей.

Идеи здесь приветствуются!

РЕДАКТИРОВАТЬ: С # 7834 я создал пакет @jest/types


PS: Это не повлияет на тех, кто использует Jest (если вы не используете модули, экспортированные напрямую Jest, которые станут типизированными). Это строго внутренний рефакторинг. Мы _не_ будем рассматривать добавление типов как критическое изменение.

PPS: В настоящее время не ставится цель распространять типы TS для использования Jest - это уже отлично обрабатывается в @types/jest . В какой-то момент мы, возможно, захотим распространить и это в шутку, но это отдельная тема.

PPPS: эта проблема _не_ для обсуждения достоинств миграции как таковой - отзывы можно публиковать в RFC . Однако, если у вас есть опыт миграции, сборки, тестирования или распространения модуля, написанного на TS, не стесняйтесь поделиться своими знаниями, полученными в этом процессе, в этом выпуске.

Help Wanted Infrastructure

Самый полезный комментарий

Черт возьми, мы закончили! 🎉

Большое спасибо всем, кто помогал. Я _не_ думал, что мы сможем сделать это всего за 4 недели.

Jest теперь официально является репо TS.

image

$ cloc packages --vcs git --exclude-dir __tests__,__mocks__
     462 text files.
     408 unique files.
      76 files ignored.

github.com/AlDanial/cloc v 1.80  T=0.45 s (896.0 files/s, 98149.4 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
TypeScript                     286           4581           4052          29135
JSON                            82              0              0           2106
Markdown                        19            571              0           1697
JavaScript                      16            217            213           1497
PHP                              1             22             14            150
-------------------------------------------------------------------------------
SUM:                           404           5391           4279          34585
-------------------------------------------------------------------------------

Следующие шаги следующие:

  • [x] Выпустите альфа-версию, чтобы убедиться, что мы ничего не сломали (сделано как [email protected] )
  • [] Установить замену для @types/jest
  • [] Преобразуйте больше модульных тестов в TS
  • [] Настроить тесты для проверки наших типов (особенно для определения типа шутников-шпионов)

Я скоро открою для них выпуски (иш).

Еще раз спасибо всем, кто скинулся!

Все 69 Комментарий

Я хотел бы внести свой вклад в это! Могу ли я взять сейчас diff-sequences ? Я уже портировал его в своей ветке и все тесты для модуля проходят.

Да, дерзай!

Привет, @SimenB!
Буду рад помочь. Можете ли вы порекомендовать пакет для начала? :)

Классно @ r3nya!

Я бы сказал, что самые простые - это babel-plugin-jest-hoist , jest-leak-detector и jest-phabricator .

Другие, которые должны быть довольно простыми: jest-changed-files , jest-diff , jest-docblock , jest-message-util , jest-regex-util и jest-serializer .

Да, дерзай!

Спасибо! Я мог бы взять и jest-changed-files и jest-regex-util .

🎉 Я обновил OP

@SimenB позвольте мне пока сделать jest-leak-detector и jest-phabricator . ;)

@ r3nya дерзай ! :)

Итак, jest-changed-files импортирует из types/Config и types/ChangedFiles которые также импортируются несколькими пакетами. Как вы думаете, как лучше всего двигаться дальше?

Path - это просто string , поэтому его можно заменить. Вы можете type Path = string чтобы уменьшить разницу 🙂

types/ChangedFiles можно скопировать и переместить в jest-changed-files (аналогично тому, что я сделал с types/PrettyFormat )

Понял, спасибо! Я создал пиар :)

Я возьму jest-repl 😁

@ MohamadKh75 спасибо! Однако это зависит от jest-runtime , jest-config и jest-validate , все из которых необходимо сначала перенести. Вы можете попробовать jest-validate ?

Рад перенести jest-each over: smile:

Ву, сделай это 😀

@ MohamadKh75 спасибо! Однако это зависит от jest-runtime , jest-config и jest-validate , все из которых необходимо сначала перенести. Вы можете попробовать jest-validate ?

Конечно! затем я начинаю jest-validate

здорово!

Попробую удачи с картой спешки 😄

Я был бы счастлив сделать jest-environment-node и jest-environment-jsdom .

Отлично, спасибо! OP обновлен 🙂

Привет, могу я сделать первую попытку за babel-plugin-jest-hoist ?

Для уверенности!

Рад взять jest-snapshot 😄

Замечательно @ doniyor2109! Обязательно поработайте поверх # 7871 (надеюсь, сегодня объединю его) 🙂

Вызов фишек на jest-config :)

Отличный @natealcedo! Следует координировать свои действия с @ MohamadKh75, который работает над jest-validate

подождите, я только что понял, что смотрю не на ту упаковку. jest-config все еще имеет зависимости, которые не были перенесены. Позвольте мне вместо этого коллировать ставки на expect . Извини, что хаха

👍

Привет, что мы делаем в сценарии, когда мы импортируем типы из types но у них не обязательно есть свой собственный пакет. В моем случае expect использует типы из types/Matchers . Могу ли я перенести большинство из них в файл types.ts из expect ?

@natealcedo Думаю, имеет смысл expect - там живут все сопоставители. В настоящее время его используют только expect , jest-jasmine2 и jest-circus , и они оба уже импортируют из expect .

Однако, поскольку мы делаем module.exports , трудно (невозможно) также экспортировать типы, поэтому нам может потребоваться вставить его в @jest/types на данный момент и переместить его в expect всякий раз, когда мы бросаем CJS

Сделаю jest-resolve-dependencies только jest-snapshot PR будет завершен :) за исключением того, что на этот раз приближаются выходные, так что у меня действительно будет время, чтобы добраться до него достаточно быстро 😅

Готов принять jest-circus при переносе зависимостей 💪

Круто @ doniyor2109 , записал.


@mattphillips @lirbank @ r3nya @ MohamadKh75 эй, как дела с заявленными вами пакетами? 🙂 Не стесняйтесь использовать потрясающую новую функцию Draft PR на GitHub, чтобы получить ранние отзывы, если вы в чем-то застряли.

https://github.blog/changelog/2019-02-14-draft-pull-requests/

@SimenB, спасибо за это
Скоро воспользуюсь ...
Во-первых, __tests__ также нужно преобразовать в .ts ?

@ MohamadKh75, было бы неплохо сделать это, но в данный момент это не требуется, особенно если они в настоящее время не набраны (я говорю о jest-validate )

Согласовано - мы можем провести дополнительные тесты, если они окажутся сложными. Важно преобразовать исходный код для продолжения миграции. Мы знаем, что текущий код _works_, поэтому я хотел бы видеть разницу с мастером в PR

Я создам новую задачу для тестов, утилит и т. Д. (А также буду следить за @ts-ignore s) позже.

Для всех, кто следит за нами, мы добавили в репозиторий 2 новых пакета, которые также необходимо преобразовать - @jest/transform & @jest/reporters (отделены от jest-runtime и jest-cli соответственно). Они должны быть довольно простыми для преобразования, если кто-то захочет их забрать 🙂

Не стесняйтесь использовать потрясающую новую функцию Draft PR на GitHub, чтобы получить ранние отзывы, если вы в чем-то застряли.

github.blog/changelog/2019-02-14-draft-pull-requests

Странный. Это не работает для моего пиара 🙈

Ха, думаю, мне следовало проверить это, а не слепо доверять блогу 😅

Просто вставьте [WIP] в заголовок, пока функция не заработает как рекламируется 🙂

Привет, @SimenB!
Извините за опоздание. Скоро сделаю!

Привет, ребята, как вы проверяете, что сборка действительно работает? Пытался построить мастер, и сценарий build:ts не работает для меня

$ yarn build:ts
$ node scripts/buildTs.js
Building TypeScript definition files
Building..............................................................error 
TS5055: Cannot write file '/Users/natealcedo/open-source/jest/packages/jest-
diff/build/index.d.ts' because it would overwrite input file.

error TS5055: Cannot write file '/Users/natealcedo/open-source/jest/packages
/jest-diff/build/types.d.ts' because it would overwrite input file.


Found 2 errors.


Unable to build TypeScript definition files
Error: Command failed: tsc -b /Users/natealcedo/open-source/jest/packages/ba
bel-jest /Users/natealcedo/open-source/jest/packages/babel-plugin-jest-hoist
 /Users/natealcedo/open-source/jest/packages/diff-sequences /Users/natealced
o/open-source/jest/packages/jest-changed-files /Users/natealcedo/open-source
/jest/packages/jest-diff /Users/natealcedo/open-source/jest/packages/jest-do
cblock /Users/natealcedo/open-source/jest/packages/jest-get-type /Users/nate
alcedo/open-source/jest/packages/jest-haste-map /Users/natealcedo/open-sourc
e/jest/packages/jest-leak-detector /Users/natealcedo/open-source/jest/packag
es/jest-matcher-utils /Users/natealcedo/open-source/jest/packages/jest-messa
ge-util /Users/natealcedo/open-source/jest/packages/jest-mock /Users/natealc
edo/open-source/jest/packages/jest-regex-util /Users/natealcedo/open-source/
jest/packages/jest-resolve /Users/natealcedo/open-source/jest/packages/jest-
serializer /Users/natealcedo/open-source/jest/packages/jest-snapshot /Users/
natealcedo/open-source/jest/packages/jest-types /Users/natealcedo/open-sourc
e/jest/packages/jest-util /Users/natealcedo/open-source/jest/packages/jest-w
atcher /Users/natealcedo/open-source/jest/packages/jest-worker /Users/nateal
cedo/open-source/jest/packages/pretty-format
    at makeError (/Users/natealcedo/open-source/jest/node_modules/execa/inde
x.js:174:9)
    at Function.module.exports.sync (/Users/natealcedo/open-source/jest/node
_modules/execa/index.js:338:15)
    at Object.<anonymous> (/Users/natealcedo/open-source/jest/scripts/buildT
s.js:29:9)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this 
command.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this 
command.

@natealcedo Это тоже случилось со мной. После удаления файлов сборки работает

Вызов на jest-runner ! :)

Я был бы счастлив взять jest-cli после переноса всех зависимостей, если кто-то еще не потребовал это :)

Потрясающий @loryman , обновил ОП! Обратите внимание, что jest-cli зависит от всего остального, поэтому может пройти некоторое время, прежде чем все его зависимости будут перенесены 🙂

Да нет проблем! А пока я могу сделать @jest/reporters так как все его зависимости перенесены

Давайте закончим jest-jasmine2 💪. Я попробую еще раз

Привет, быстрый вопрос, могу ли я перенести types/TestRunner на jest-runner или jest-types .

@natealcedo jest-runner для меня имеет смысл. Хотя экспортированный Reporter можно переместить в @jest/reporters , над переносом которого работает

Если это окажется трудным (из-за CJS, циклических зависимостей или чего-то еще), просто переместите его в @jest/types и мы сможем очистить его позже 🙂

Сладкий! Звучит как план. @SimenB

Эй, что осталось, что можно подобрать? :)

Ого, мы почти закончили! Замечательно 😀 Если хотите, можете приступить к конвертации тестов e2e? Только те, что находятся в этом каталоге, а не сами тесты: https://github.com/facebook/jest/tree/master/e2e/__tests__
По сути, это включает преобразование Utils в TypeScript, я думаю, после чего сами тесты должны просто переименовывать файл

Я пингую те, которые заявили пакеты, но еще не открыли PR, могут быть более доступными.


@mattphillips @lirbank @ MohamadKh75 привет , еще один пинг. Если у вас нет времени на миграцию, это нормально, но если да, было бы неплохо, если бы кто-то другой мог забрать пакет, который вы заявили 🙂

По предоставленной вами ссылке возвращается 404. Но вы имеете в виду содержимое каталога __tests__ я полагаю?

Если это так, я с радостью возьмусь за это 👍

Да! Не уверен, почему GH испортил ссылку, я вставил https://github.com/facebook/jest/tree/master/e2e/__tests__ . Похоже на ошибку 🤷‍♂️

Мне понадобится tsconfig.json в каталоге __tests__ ?

Я не знаю. Я так не думаю (здесь мы не будем создавать файлы типизации)? Попробуйте без 🙂

Конечно. 💯

@SimenB Осталось еще jest-repl

У него есть зависимости, которые не были перенесены. Но я думаю, что мы можем просто сделать ts-ignore для этого импорта на данный момент, я думаю, что у нас есть достаточно хорошая установка для поддержки этого сейчас. Хотя это займет около 5 минут

@SimenB Извините за задержку, отвлекся и отсутствовал всю неделю. Я сделаю это сегодня!

Потрясающе. Я добавил пакет @jest/environment , который должен экспортировать интерфейс, который будет реализован средами. Я не тестировал его, поэтому он может работать некорректно. Не стесняйтесь открывать ранний PR, если он вызывает у вас трудности

Ого, мы почти закончили! Awesome Если хотите, можете приступить к конвертации тестов e2e? Только те, что находятся в этом каталоге, а не сами тесты: https://github.com/facebook/jest/tree/master/e2e/__tests__
По сути, это включает преобразование Utils в TypeScript, я думаю, после чего сами тесты должны просто переименовывать файл

Я пингую те, которые заявили пакеты, но еще не открыли PR, могут быть более доступными.

@mattphillips @lirbank @ MohamadKh75 привет , еще один пинг. Если у вас нет времени на миграцию, это нормально, но если да, было бы хорошо, если бы кто-то другой мог забрать пакет, который вы заявили.

Мне очень жаль ... у меня возникли неожиданные проблемы ... может быть, я смогу помочь в других разделах ...: разочаровано:

Нет проблем @ MohamadKh75 , спасибо за jest-repl если хотите сделать пакет? Мы находимся в точке, где нам не нужно ждать зависимостей. Если у вас нет времени, это, конечно, не проблема - мы все делаем это в свободное время

Привет, я могу взять jest-repl поскольку @ MohamadKh75 недоступен для выполнения задания? :)

Конечно, дерзай 🙂

Привет, @loryman , я взял jest-cli так как ты занят @jest/reporters 🙂

Привет, @loryman , я взял jest-cli так как ты занят @jest/reporters 🙂

Конечно, вперед!

Черт возьми, мы закончили! 🎉

Большое спасибо всем, кто помогал. Я _не_ думал, что мы сможем сделать это всего за 4 недели.

Jest теперь официально является репо TS.

image

$ cloc packages --vcs git --exclude-dir __tests__,__mocks__
     462 text files.
     408 unique files.
      76 files ignored.

github.com/AlDanial/cloc v 1.80  T=0.45 s (896.0 files/s, 98149.4 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
TypeScript                     286           4581           4052          29135
JSON                            82              0              0           2106
Markdown                        19            571              0           1697
JavaScript                      16            217            213           1497
PHP                              1             22             14            150
-------------------------------------------------------------------------------
SUM:                           404           5391           4279          34585
-------------------------------------------------------------------------------

Следующие шаги следующие:

  • [x] Выпустите альфа-версию, чтобы убедиться, что мы ничего не сломали (сделано как [email protected] )
  • [] Установить замену для @types/jest
  • [] Преобразуйте больше модульных тестов в TS
  • [] Настроить тесты для проверки наших типов (особенно для определения типа шутников-шпионов)

Я скоро открою для них выпуски (иш).

Еще раз спасибо всем, кто скинулся!

Альфа выпущена! Пожалуйста, сделайте yarn add -D jest@beta или npm i -D jest@beta (в настоящее время [email protected] ) и пожалуйтесь, если он ужасно взорвется 🙂

Была ли эта страница полезной?
0 / 5 - 0 рейтинги