These changes add a dependency on the madge package and connect it to a new check.imports script in package.json. The script is now called in the tests workflow to ensure we don't introduce new circular dependencies. In #115 I talked about using dpdm, but I realized after making the issues that madge seems to be more popular and has more people working on it.
As far as fixing the existing circular imports, all of them looked something like this:
flowchart LR
A(Router.tsx)
A --> B(various pages & components)
B --> A
Where the various pages & components were importing Router.tsx to get the paths object.
So the fix is to move the paths object to a separate module and you end up with:
flowchart TD
A(paths.ts)
B(Router.tsx) --> A
C(various pages & components) --> A
Fixes #115
Summary
These changes add a dependency on the
madge
package and connect it to a newcheck.imports
script inpackage.json
. The script is now called in the tests workflow to ensure we don't introduce new circular dependencies. In #115 I talked about usingdpdm
, but I realized after making the issues thatmadge
seems to be more popular and has more people working on it.As far as fixing the existing circular imports, all of them looked something like this:
Where the various pages & components were importing
Router.tsx
to get thepaths
object.So the fix is to move the
paths
object to a separate module and you end up with: