Size: a a a

2020 November 14

Вт

Ві тя in Frontend UA
Dmytro Dovhan
В ci все ок проблема в разных окружениях разработчиков
а зачем разработчики регрессионньіе тестьі со скриншотами гоняют локально?
источник

DD

Dmytro Dovhan in Frontend UA
Обновить референсы например
источник

Вт

Ві тя in Frontend UA
вам просится https://percy.io/
источник

DD

Dmytro Dovhan in Frontend UA
Да я знаю про него и аналоги, но компания не приветствует внешние сервисы
источник

EO

Eugene Obrezkov in Frontend UA
Dmytro Dovhan
@ghaiklor возвращаясь к вчерашей теме про монорепо,
попробовал в качестве демо одну из либ перевести на rush - столкнулся с проблемой запуска cypress в докере локально (докер что бы не было проблем снятия скриншотов в разных окружениях)
раньше выглядело как то так
"test:docker":  "docker run  -v $PWD:/e2e -w /e2e cypress/included:5.1.0 --env configFile=vtest.file"
как я понимаю это перестало работать из-за симлинков - часть скриптов просто не видит установленных пакетов

думаю можно было бы сделать кастомный докер файл и ставить все пакеты заново, но мне кажется теряется смысл тогда от rush и pnpm

может есть идеи как это сделать лучше?
ты получаешь ошибку что не может модуль найтись?
источник

DD

Dmytro Dovhan in Frontend UA
Eugene Obrezkov
ты получаешь ошибку что не может модуль найтись?
Да
источник

EO

Eugene Obrezkov in Frontend UA
ну это классика
источник

EO

Eugene Obrezkov in Frontend UA
когда разработчики используют транзитивные зависимости других пакетов
источник

EO

Eugene Obrezkov in Frontend UA
есть несколько вариантов решения, один из них это сделать недостающие модули прямой зависимостью твоего проекта
источник

EO

Eugene Obrezkov in Frontend UA
но вообще без доп. инфы тяжело понять что именно у тебя там, так что я просто вкинул часто возникаемую ошибку
источник

EO

Eugene Obrezkov in Frontend UA
я так понял что у тебя есть какой-то код, который импортирует модуль из зависимости, которой у тебя нету в package.json
источник

DD

Dmytro Dovhan in Frontend UA
Eugene Obrezkov
есть несколько вариантов решения, один из них это сделать недостающие модули прямой зависимостью твоего проекта
Падает на пакетах которые явно указаны
источник

EO

Eugene Obrezkov in Frontend UA
Dmytro Dovhan
Падает на пакетах которые явно указаны
ты можешь хотя бы описать, какие именно ошибки получаешь? 🙂
источник

EO

Eugene Obrezkov in Frontend UA
со всего что ты описал, я увидел что ты запускаешь cypress - всё
источник

DD

Dmytro Dovhan in Frontend UA
Eugene Obrezkov
ты можешь хотя бы описать, какие именно ошибки получаешь? 🙂
Error: Cannot find module 'fs-extra'

в папке с нод модулями есть линка на этот пакет, но видимо когда оно маунтится в докер - что то идет не так )

вне rush использовался просто npm все пакеты лежали как обычно в node_modules
источник

EO

Eugene Obrezkov in Frontend UA
Dmytro Dovhan
Error: Cannot find module 'fs-extra'

в папке с нод модулями есть линка на этот пакет, но видимо когда оно маунтится в докер - что то идет не так )

вне rush использовался просто npm все пакеты лежали как обычно в node_modules
при маунте в докер симлинки не резолвятся же в сами файлы, от и не может найти
симлинка у тебя на common папку ведёт, ты её не копируешь внутрь контейнера - от и не находит
источник

EO

Eugene Obrezkov in Frontend UA
это решается хардлинками
источник

EO

Eugene Obrezkov in Frontend UA
конкретно в твоем случае, надо думать как это решить, но уже вечер пятницы и мне просто влом 🙂

Я бы спросил, зачем вы так издеваетесь с локальной разработкой, но ситуации бывают разные. pnpm ставит всё в node_modules с симлинкой на .pnpm в папке рядом, а .pnpm это всё хардлинки на global content-addressable storage. Поэтому когда пакуешь\копируешь\вотевер node_modules после pnpm, то всё работает. Так как симлинки из node_modules резолвятся в .pnpm рядом, а .pnpm содержит в себе настоящие файлы, потому что pnpm их делает через хардлинки, а не симлинки.

Раш же, в свою очередь, после установки в глобальный стор, симлинкает только прямые зависимости твоих проектов внутрь. Весь этот стейт лежит в common/temp. Поэтому если вы, по какой-либо из причин, всё таки хотите продолжать ваш флоу с докером, то я бы посоветовал копировать common внутрь тоже, чтобы оно резолвилось.

А то получается вы с одной стороны хотите быстро, стильно, секьюрно, а с другой стороны у вас flawed assumption о том, где файлы лежат
источник

EO

Eugene Obrezkov in Frontend UA
оставлю для референса - https://stackoverflow.com/a/185903
источник

DD

Dmytro Dovhan in Frontend UA
Спасибо , есть над чем подумать
источник