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.
tsdown builds @eds/react and keeps its package exports aligned with the generated output.
- It bundles our published entrypoints from packages/react/src/*
- It generates ESM, CJS, and TypeScript declaration output
- It updates the package exports map from the configured entrypoints
- It replaces the Preconstruct-specific shims we used to need for subpath imports
- Uses Lightning CSS for CSS processing and bundling
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 Content Collections 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.