As usual between major projects, I try to spend a little time working on maintenance and upkeep of the multitude of projects that I've written or contributed too. It is somewhat random, but I had a task to move two of my Node packages, @mfgames-writing/ncx and @mfgames-writing/opf into the mfgames-writing monorepo when I had done the rest of the projects.
The decision to convert to a single repository for a multiple of projects took me quite a while. Mostly it came from the problem I have with package-based arrangements, the “rail car”. When I have to make a change to a library but that change has to be propagated through a number of packages until the one that needed the change. It looks like a chain and it's tedious when I'm doing rapid sets of changes trying to figure something out.
Now, I could just do everything in a single monolithic project, basically have a
mfgames-writing package that does everything, but I still follow the Unix Philosophy: Do One Thing Well. The individual packages handle EPUB, PDF, and HTML generation. It feels “wrong” to force all of them to be combined together.
In the end, I want separate packages but I dislike the process of working with them. With Node packages, I found Lerna which handles a lot of that forwarding, plus plays well with semantic-release and conventional commits. I've been happy, but it was a learning process and I missed two packages.
I also reformatting the code and switched testing over to Jest. It bumped up a few versions, but that always seem to happen when I'm learning things.
While that cleans up most of the packages, there are a few others related packages I still need to convert, namely the Docker image and the Yoman generator. Those are completely different than the core packages, so they shouldn't be in the monorepo in my opinion.
But those can wait until next around.