DEV Community

Hállex da Silva Costa for Woovi

Posted on

Woovi monorepos best practices

Summary

Look at the conflict between the dependencies version

This detail implies if any dependencies can be resolved correctly and if not have a version conflict.
As the example we have the styled-components lib, it can have a problem with type Symbol reference where the library doesn´t find your properties of themes because, in your internal code, it uses the symbolObject which is a unique object that refers your set configs.

This rule is valid for any type of dependency like react-relay, relay-compiler, style-components, react and so on.
If you use pnpm you can run the command pnpm list <package-name> --recursive to help you find duplicate packages with different versions.

Always update a package remember to update your codependencies

Here I will use relay-compiler as an example, if you update the project's relay version, ensure that the react-relay, babel, swc, or in the general context, all relay plugins and your codependency this updates can prevent conflict of compatibility and unexpected bugs.
Also remember to delete any artifact that may have been generated by an old version of some library you are using, such as the __generated__ folder of relay-compiler.

Clear the cache

If some error is thrown on the screens and the value is undefined it should have some value and probably have a persistence of cache from older executions.

Change the error also is a progress

Sometimes you may get stuck on an error or bug, just following these other steps above may not solve the problem 100%, but it will probably change the error and this can be considered progress.

In Conclusion

Synchronizing codependencies and using tools like pnpm list <package-name> --recursive helps identify incompatible versions while updating related packages ensures compatibility. Clearing caches, and removing old artifacts of relay-compiler can help get closer to the goal, and errors should be treated as progress steps toward resolution.

Top comments (0)