EDS4 logo

Monorepo tools

Libraries used to help manage the EDS monorepo.

To make working with many different, individually versioned components easier this repository is a monorepo powered by NPM workspaces.

This enables us to deal with dependency management and allows us to use a component as if it were installed via npm.

Working inside a monorepo comes with a bunch of challenges including:

  • Making sure that all dependencies are aligned among all your components
  • Making sure dev peer-dependencies are included and are the same as dev-dependencies
  • All package names are valid
  • The repository field in your package.json is correct

manypgk helps solve these issues. This tool lints our monorepo and comes with a fix command.

preconstruct makes working inside a monorepo easier.

  • In dev mode, our code behaves the same as it will in production
  • It allows adding multiple entrypoints to packages for publishing
  • The CLI helps walk us through set-up and making changes to configs
  • It builds the code with rollup

Changesets is used to manage changelogs and the publishing of versions. It provides a workflow to make sure all changes are tracked, contributors are noted and packages are published automatically.

Read more on our use of changesets in the Publishing Packages page.

The docs site is built with NextJS and uses contentlayer to convert markdown files in the docs site, or README.md files in packages to data for HTML rendering.

You can learn more about some of the tools we use to manage the repo at the monorepo guide website.