CoSpace

February 4, 2022

CoSpace, a thin cli wrapper around pnpm workspaces to help link multiple (mono)repos together.

While working across multiple monorepos I found myself wanting to quickly test out changes I was making in my platform's sdk with one of our products. I was never satisifed with npm link or yalc or other solutions; and there were way too many packages to link together. I wished there was an easy way to build a monorepo consisting of other monorepos, a megarepo if you will, and link everything together. That way I could quickly prototype and test changes seamlessly. And that's how CoSpace was born.

Powered by

stats

Fetching stats...

Create a new CoSpace

Initialize

npx cospace@latest init my-cospace
cd my-cospace
  1. Clone all the repos you want to link together under the repos sub directory.

  2. Update the pnpm-workspace.yaml file with all the packages you want to add to your CoSpace. By default all packages under the repos sub directory will be added to your CoSpace; you will probably want to be more specific and build/link only what you need.

  3. Update the cospace.code-workspace file with all the repos you want to add to your vscode multi-root workspace.

  4. Run pnpm exec cospace override to automatically update the pnpm.overrides section of the CoSpace's package.json, to link all the dependencies together with the copy found in the workspace. This will ignore semver and always use the local package version from the workspace, very useful for when you have pre-release versions of packages in your workspace.

  5. Run pnpm install to install all the packages you've added to your CoSpace.

  6. Run pnpm build to build all the packages you've added to your CoSpace using your monorepo task runner. By default we use lage, but turborepo should work as well.

For more information visit the docs site.

example usage

  • itwin-cospace, an example of a CoSpace to help develop with the iTwin Platform.