I am contemplating the most effective workflow for working on projects A, B, and C simultaneously, where project A relies on project B, which in turn relies on project C.
Currently, I have all three projects stored in one repository, which helped speed up the initial development process. This is how my working directory is structured:
/A/
/A/B
/A/B/C
Project A is the main development driver, but projects B and C are also evolving in parallel.
However, I would like to be able to release projects B and C individually as they are valuable on their own.
My dilemma lies in finding a way to do this without compromising the speed of my development process. While npm is useful for distributing and managing dependencies, constantly moving versions across the internet during development just to update files in different folders on my machine is not ideal :)
Manually copying files over is also not an efficient solution. The thought of having to switch directories to work on project B and then copy it back to /A/B is daunting and error-prone.
That's why git submodule appears to be the solution - it allows me to maintain my directory layout as is. When making changes to files in project B, I can test them directly in project A without the need for manual copying. Once ready, I can commit and push from all three folders, automatically syncing everything to three different repositories. It sounds perfect, yet many people dislike git submodule for various reasons.
This issue is similar when working on grunt plugins. With each plugin in its own repository, I find myself continuously copying it over to one of the projects using it for development purposes. By the end of the day, I copy it back to the grunt plugin working directory, make commits, and push them. Although manageable for a few plugins, it becomes cumbersome for the current project I am focusing on.
I am left wondering, what is the solution to streamline this process?