Alexander
sizeof(int) + оверхед на массив или sizeof(int) * 10000 + оверхед на массив?
Max
https://github.com/lerna/lerna
Max
кто юзает ?
Дима
sizeof(int) + оверхед на массив или sizeof(int) * 10000 + оверхед на массив?
Скорее второе (но не уверен), но важнее то, что sparse array медленнее обычных, по возможности нужно их избегать
Sergey
Я
Для каких проектов
Max
каков профит, по сравнению, просто с репой без пакетов ?
Max
лерна под отдельной репой у вас, или по репам с проектами размазана ?
Дима
Для каких проектов
Обкатал в telegram-mtproto, (там шесть пакетов разного назначения) теперь в закрытые проекты подтягиваю
Max
ну и каждый отдельный проект, тянет из этой монорепы по пакетикам ?
Sergey
Таймураз
спасибо
Ближе ко второму Но все предыдущие у тебя будут забиты indefined
Nurik
ребят, а еще, не покажите, плиз, 2 объекта sequelize со связью one-to-many, если не сложно? ну на подобие User и Post
Я Кстати тоже пытался как-то со связями работать. Но так и не смог. Там вообще как-то всё сложно сделано. Так что я вообще бросил эту идею.
Дима
каков профит, по сравнению, просто с репой без пакетов ?
Смысл в том, что становится меньше проблем с зависимостями в случае связных проектов - всё всегда юзает актуальную версию
Max
почему бы просто не заюзать второй сорс фолдер под гитом, без пакетиков ?
Sergey
почему бы просто не заюзать второй сорс фолдер под гитом, без пакетиков ?
Лерна сама обновляет зависимости и версии из монорепо
Дима
почему бы просто не заюзать второй сорс фолдер под гитом, без пакетиков ?
Ну например фронт и бэк. Они будут требовать разных пакетов, lerna bootstrap - и всё само устанавливается и линкуется если надо
Max
хм... тогда получается три физических репозитория, фронт , бэк, шаред. И если я делаю что-то в шаред, то должен вносить изменения ещё в двух репах и их коммитить
Sergey
Ну например фронт и бэк. Они будут требовать разных пакетов, lerna bootstrap - и всё само устанавливается и линкуется если надо
Я вот думаю проект так писать. Бизнес логику вынести в отдельный пакет. Это норм?
Max
шаред - монорепа, со всеми пакетами
Таймураз
спасибо
На самом деле, массив в js-е - это объект. Выставив 10000 у тебя этому индексу присвоится значение и все
Таймураз
спасибо
Так что по памяти оно займет немного места
Max
т.е. мой модуль с точкой входа, это тоже часть монорепа. Будь то фронт или бэк
Alexander
Так что по памяти оно займет немного места
да, супер там просто массивы в массивах (yo dawg) и последний уровень не охота в объект класть
Max
пакет в монорепе, под лерной
Alexander
там пара ключей, но больших
A
https://developer.mozilla.org/ru/docs/Web/API/Fetch_API
Благодарю. всего то надо дописать .then(r=> r.json())
Таймураз
да, супер там просто массивы в массивах (yo dawg) и последний уровень не охота в объект класть
Ты можешь все, что угодно использовать в качестве ключа, JS приведет это к строке
Дима
пакет в монорепе, под лерной
Тогда откуда "вносить изменения в остальные пакеты"? В принципе, lerna сама следит за актуальностью версий зависимостей
Таймураз
Благодарю. всего то надо дописать .then(r=> r.json())
Доки- наше все. Нужно уметь отличать вопросы по докам, вопросы, которые можно найти в интернете и вопросы, которые лучше спросить напрямую
Sergey
Если она действительно общая и есть смысл, то норм
Глянь на atmx.in/rest, atmx.in/rest-ex, atmx.in/rest-koa Есть смысл в монорепо?
Anonymous
А если установить значение пустого массива со 100500-ым индексом, то он же насоздаёт пустых элементов до него? Это медленно?
Дима
Плюс lerna run <comand> -- запустить сразу всо всех репах с такой командой. От банального lerna run start до каких-то более сложных вариантов)
Anonymous
Не создаёт по факту
Но вывод напечатает вот такое: [ , , , , ... , 'myValue']
Anonymous
Это как понимать?
Sergey
Это как понимать?
Просто печатать до индекса
Vladimir
Это называется "дырка"
Anonymous
То есть, он просто создаёт элемент и лишней работы не делает?
Mikhail
он делает length = 100500, сами элементы не создает
Max
сейчас я делаю апдейт пакета под гитом и перезапускаю софт. Удобнее ли это будет сделать с лерной, без гита и через самоапдейт софта через npm update ?
Vladimir
Не, при попытке перебрать тоже не делает
Anonymous
Не, при попытке перебрать тоже не делает
Эм... У него внутри типа индекса что-то есть?
Дима
Стандартный map не перебирает элементы которых нет
Vladimir
Ну логически массив это просто объект
Anonymous
Но если я сделаю map, то он переберёт и пустые значения.
Anonymous
Да ладно?
Mikhail
нет, в map/forEach/... проверка на существование
Vladimir
А если [...list] ?
Так сделает, да
Vladimir
то есть for of отдаст пустые элементы, forEach - нет
Sergey
Да, вот так и думал
Anonymous
А... Вспомнил.
Anonymous
Нужно сначала сделать fill()
Дима
сейчас я делаю апдейт пакета под гитом и перезапускаю софт. Удобнее ли это будет сделать с лерной, без гита и через самоапдейт софта через npm update ?
lerna publish --skip-npm проапдейтит все версии зависимостей между пакетами и сделает аккуратный релиз обновленных пакетов в git. В prepublish проектов у тебя скорее всего изначально будет грамотная пересборка, поэтому фактически одной командой ты обновляешь всё, делаешь пуш в гит и получаешь воркспейс с актуальным проектом)
Дима
@zerobias что думаешь
Думаю можно
Дима
У меня и был похожий кейс - много пакетов, держать которые в одном нецелесообразно - там и зависимости для ноды, и чисто браузерные штуки, в общем юзеры бы офигели от списка deps))
Таймураз
нет, в map/forEach/... проверка на существование
Нет проверки на существование
Дима
Плюс ещё один бонус монорепы - можно убрать из devDeps каждого пакета нерелевантные ему штуки. Работая с четырьмя пакетами, на все будет всего один инстанс eslint, один flow (вот от этого особенно хорошо, учтывая его жручесть) и так далее
Таймураз
А, нет, есть Я неправильно затестил
Таймураз
Более того, .map пробежит только по числовым индексам
Дима
В плане?
Sergey
В плане?
Ну установка дев флоу идёт в корень же
Дима
Ну да
Дима
В корне - свой package.json)
Sergey
А юзать из пакета, в скриптах нет ../../node_modules/.bin/flow ?