Alexander
sizeof(int) + оверхед на массив
или sizeof(int) * 10000 + оверхед на массив?
Max
https://github.com/lerna/lerna
Max
кто юзает ?
Дима
Sergey
Max
каков профит, по сравнению, просто с репой без пакетов ?
Таймураз
Alexander
Max
лерна под отдельной репой у вас, или по репам с проектами размазана ?
Дима
Для каких проектов
Обкатал в telegram-mtproto, (там шесть пакетов разного назначения) теперь в закрытые проекты подтягиваю
Дима
Max
ну и каждый отдельный проект, тянет из этой монорепы по пакетикам ?
Sergey
Таймураз
спасибо
Ближе ко второму
Но все предыдущие у тебя будут забиты indefined
Max
почему бы просто не заюзать второй сорс фолдер под гитом, без пакетиков ?
Sergey
Max
хм... тогда получается три физических репозитория, фронт , бэк, шаред. И если я делаю что-то в шаред, то должен вносить изменения ещё в двух репах и их коммитить
Sergey
Max
шаред - монорепа, со всеми пакетами
Sergey
Alexander
Таймураз
спасибо
На самом деле, массив в js-е - это объект. Выставив 10000 у тебя этому индексу присвоится значение и все
Дима
Таймураз
спасибо
Так что по памяти оно займет немного места
Max
т.е. мой модуль с точкой входа, это тоже часть монорепа. Будь то фронт или бэк
Max
пакет в монорепе, под лерной
Alexander
там пара ключей, но больших
Дима
Таймураз
Дима
пакет в монорепе, под лерной
Тогда откуда "вносить изменения в остальные пакеты"? В принципе, lerna сама следит за актуальностью версий зависимостей
Max
Anonymous
А если установить значение пустого массива со 100500-ым индексом, то он же насоздаёт пустых элементов до него? Это медленно?
Sergey
Дима
Плюс lerna run <comand> -- запустить сразу всо всех репах с такой командой. От банального lerna run start до каких-то более сложных вариантов)
Anonymous
Не создаёт по факту
Но вывод напечатает вот такое:
[ , , , , ... , 'myValue']
Anonymous
Это как понимать?
Vladimir
Это называется "дырка"
Max
Anonymous
То есть, он просто создаёт элемент и лишней работы не делает?
Mikhail
он делает length = 100500, сами элементы не создает
Max
сейчас я делаю апдейт пакета под гитом и перезапускаю софт. Удобнее ли это будет сделать с лерной, без гита и через самоапдейт софта через npm update ?
Sergey
Vladimir
Не, при попытке перебрать тоже не делает
Anonymous
Sergey
Дима
Стандартный map не перебирает элементы которых нет
Vladimir
Ну логически массив это просто объект
Sergey
Anonymous
Но если я сделаю map, то он переберёт и пустые значения.
Anonymous
Да ладно?
Mikhail
нет, в map/forEach/... проверка на существование
Vladimir
Vladimir
то есть for of отдаст пустые элементы, forEach - нет
Sergey
Да, вот так и думал
Anonymous
А... Вспомнил.
Anonymous
Нужно сначала сделать fill()
Sergey
Дима
Дима
У меня и был похожий кейс - много пакетов, держать которые в одном нецелесообразно - там и зависимости для ноды, и чисто браузерные штуки, в общем юзеры бы офигели от списка deps))
Таймураз
Дима
Плюс ещё один бонус монорепы - можно убрать из devDeps каждого пакета нерелевантные ему штуки. Работая с четырьмя пакетами, на все будет всего один инстанс eslint, один flow (вот от этого особенно хорошо, учтывая его жручесть) и так далее
Таймураз
А, нет, есть
Я неправильно затестил
Sergey
Таймураз
Более того, .map пробежит только по числовым индексам
Дима
В плане?
Sergey
В плане?
Ну установка дев флоу идёт в корень же
Дима
Ну да
Дима
В корне - свой package.json)
Sergey
А юзать из пакета, в скриптах нет ../../node_modules/.bin/flow ?