We can imagine the
environments folder as a "work surface", which gives access to all of the environments in our workspace.
Environments are where we collect a set of building blocks in one place, to work on them. They are how we create the "monolithic" development experience, which allows us to work efficiently with our code. In this example,
development is the root folder that you would open in your IDE/code editor.
This centralisation of building blocks in one place is achieved through the magic of symbolic links (notice the little arrows on the
src folders). The symbolic links refer to the corresponding folders for each component and base, which live in their respective "drawers". For example, the
user symbolic link in
environments/development/src/clojure/realworld/user points to the
We use the same approach with symbolic links to centralise
test from the corresponding components and bases.
When you open an environment in your IDE/code editor, and make changes to a component or base, those changes actually take place in the component and base "drawers". In other words, the symbolic links mean that we're directly editing the code that lives in the
This gives us the option to have several environments, each one with a different set of components and bases.