Open PavelZubkov opened 3 years ago
хотя наверно, проблема долгой сборки в том что каждый раз на холодную запускаю -- upd
- Сборка не нужных файлов. Сейчас запуск
yarn start path/to
занимает у меня 45 - 60 секунд. Причем нужные файлы:node.deps.js node.js node.test.js
собираются за 0.425 + 3.555 + 5.502 = 9.482 секунды
В ручных подсчетах еще несколько файлов не учел, сделал сборку только нодовских файлов, получилось 25 - 30 секунд
позже попробую автоперезапуск со слежением прикрутить
По идее эта проблема должна решиться, когда сделаем автосборку нодового бандла.
Там надо пошаманить с тест-раннером ($mol_test), чтобы он автоматически дёргал precess.exit(0) в конце тестов. По идее это не сложно.
Если использовать $node.pg
, то должен автоматом в package.json
попадать.
Сервер и клиент - это всё же разные приложения, которые должны находиться в разных директориях. Возможность разделения кода на клиентский/серверный нужна для предоставления единого интерфейса, но с принципиально разными реализациями.
3) Поправил, теперь тестовый бандл всегда завершается.
Есть идя как сделать автосборку сервера. Девсервер слуiает запросы вида /my/server
, собирает и запускает серверный бандл и перенаправляет этот запрос к нему. В случае изменения файлов сервер глушится и при следующем запросе пересобирается и перезагружается заново.
Если я правильно понял: такое не будет работать если фронт с сервером по сокетам общаются?
Почему же, вполне будет. Сокет соединение разорвётся, клиент попытается переконнектится и поднимет сервер.
Problem
Пока несколько кейсов встретил, решил в все в одном ишью завести.
Сборка не нужных файлов. Сейчас запуск
yarn start path/to
занимает у меня 45 - 60 секунд. Причем нужные файлы:node.deps.js node.js node.test.js
собираются за 0.425 + 3.555 + 5.502 = 9.482 секундыАвтоперезапуск. Сейчас цикл выглдяит так: правлю код -> руками запускаю сборку -> руками запускаю бандл.
Если в бандле есть запуск долгоживущих процессов, типа http.server.listen(), то надо в тестах шаманить с process.exit(0)
Добавление используемых пакетов в сгенерированный package.json. Я добавил в mam_lib пока локально, пакет pg для постргесс. Руками установил его в mam. В сгенерированном package.json его нет
Не хватает неймспейсов для переопределения класса для бекенда в node.ts, $ и $$ занят фронтовским компонентом =)
Solution
В теории можно ускорить сборку, если будет возможность сказать сборщику собирай мне только нодовский бандл. Например добавить параметр типа 'target=node|all'. Еще можно посмотреть в сторону, что если у пакета есть node.ts файлы, и нету web.ts и просто .ts то собирать только нодовский бандл.
Тут не такая большая проблема, я могу сам подключить nodemon и запускать как-то так: `nodemon "yarn start path/to" && "node path/to/-/node.js". Вообще было бы удобно что бы дев сервер, мог запускать нодовские сервера.
Например у меня сейчас в проекте два сервера:
Сам проект - поднимается http сервер и все полученные запросы пишет в базу. Фронт позволяет смотреть какие запросы и когда пришли
Идеальный вариант что бы при выборе нужного модуля в файловом-менеджере в браузере, dev сервер мог сам запустить оба сервера. Например что бы новый разраб, запустил одну команду и у него все поднялось, не надо было разбираться. Еще база данных запускается в докере, было бы классно что бы она тоже поднималась.
В теории весь запуск дев серверов можно прописать в докере, но как понимаю это удобно только линукс пользователям на винде с докером не так удобно.
Тут наверно надо самому делать не безусловный запуск долгоживущих процессов, а по какому-нибудь параметру из командной строки.
Было бы удобно не тащить дополнительный package.json с нужными зависимостями из npm. А что бы они добавлялись в генерированный package.json
Хотел сервер, который сохраняет http запросы запилить в корневом .ts файле. Например у меня проект лежит в aspirity/restmock, есть файлы:
Как итог
Нужно добавлять какие-то дополнительные инструкции в meta.tree (сборка требуемых бандлов , добавление зависимостей в package.json , запуск дополнительных серверов) и/или придумывать соглашения