marcin

marcin

Can you recommend a build system for a monorepo?

There is an overwhelming list of build systems and hence approaches to a monorepo here: GitHub - korfuri/awesome-monorepo: A curated list of awesome Monorepo tools, software and architectures. · GitHub; I am looking for some recommendations.

We build an Elixir based server and a bunch of Typescript/Javascript SDK libraries, as well as some microservices (for NodeJS, python platforms).
The projects interact using GraphQL and AMQP (messages in RabbitMQ) APIs.
We found it hard to manage this interoperability using multiple repositories and would like to try out a monorepo.
Each of these projects will have it’s own build system and artifacts - so for Elixir we use standard mix release, for JS we use yarn and publish packages to npm, same for python and packages on pypi.
AFAIR the monorepo build system can help out to mange these project-level build systems on a top, codebase level; I do not have any experience with that so far.

Can you recommend a build system and its approach? Or maybe I do not need any and I just need a top level Makefile / bash script that builds everything recursively ?

Showing Posts 1 to 3

dimitarvp

dimitarvp

I’ve had limited success with GitHub - casey/just: 🤖 Just a command runner · GitHub in polyglot repos but have in mind it’s more of a generic task runner without some truly dedicated DAG dependency management like other modern tools have.

I want to try GitHub - ejholmes/walk: A fast, general purpose, graph based build and task execution utility. · GitHub but haven’t had a chance yet. I’ve heard good feedback in HN.

wolf4earth

wolf4earth

While I haven’t used it on a big monorepo yet, I really enjoyed using earthly.dev in a phoenix project with a non-trivial webpack setup.

It’s basically Dockerfile meets Makefile, which is surprisingly powerful since you can use docker images as the base for your targets, so you don’t have to think about how to setup your build environment.

olivermt

olivermt

What you normally do is have multiple runners per project. Most of my projects kick off different pipelines in api/, mobile/ or client/ (depending on if there were changes ofc).

I use this pattern on Circle, azure devops and github actions.

Edit: assuming you deploy the various platforms to different places. If your client is served by elixir you would just have another step to compile assets on top of the rest.

While makefiles etc are fine, 99.99% of the time Bash will do just fine.

— All posts loaded —

Where Next? Top

Trending in Questions Top

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
jaybe78
Hello, I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter). The diffic...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews