microbiomedata / nmdc-field-notes

Mobile app for metadata collection on the go
https://fieldnotes.microbiomedata.org/
Other
1 stars 0 forks source link

Install `madge` NPM package and eliminate circular dependencies #116

Closed pkalita-lbl closed 3 weeks ago

pkalita-lbl commented 3 weeks ago

Fixes #115

Summary

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