MONOREPO.md 2.0 KB

Monorepo Guide

Roo Code has transitioned to a monorepo powered by PNPM workspaces and Turborepo.

When you first pull down the monorepo changes from git you'll need to re-install all packages using pnpm. You can install pnpm using these instructions. If you're on MacOS the easiest option is to use Homebrew:

brew install pnpm

Once pnpm is installed you should wipe out your existing node_modules directories for a fresh start:

# This is optional, but recommended.
find . -name node_modules | xargs rm -rvf

And then install your packages:

pnpm install

If things are in good working order then you should be able to build a vsix and install it in VSCode:

pnpm vsix -- --out ../bin/roo-code-main.vsix && \
  code --install-extension bin/roo-code-main.vsix

To fully stress the monorepo setup, run the following:

pnpm clean && pnpm lint
pnpm clean && pnpm check-types
pnpm clean && pnpm test
pnpm clean && pnpm build
pnpm clean && pnpm bundle
pnpm clean && pnpm bundle:nightly

pnpm clean && pnpm npx turbo watch:bundle
pnpm clean && pnpm npx turbo watch:tsc

pnpm --filter @roo-code/vscode-e2e test:ci

pnpm clean && \
  pnpm vsix -- --out ../bin/roo-code.vsix && \
  code --install-extension bin/roo-code.vsix

pnpm clean && \
  pnpm vsix:nightly -- --out ../../../bin/roo-code-nightly.vsix && \
  code --install-extension bin/roo-code-nightly.vsix

Turborepo

Note that this excludes the build task for next.js apps (@roo-code/web-*).

Tasks: build -> bundle -> vsix

build:

  • @roo-code/build [input: src, package.json, tsconfig.json | output: dist]
  • @roo-code/types [input: src, package.json, tsconfig.json, tsup.config.ts | output: dist]
  • @roo-code/webview-ui [input: src, package.json, tsconfig.json, vite.config.ts | output: ../src/webview-ui]

bundle:

  • roo-cline [input: * | output: dist]

vsix:

  • roo-cline [input: dist | output: bin]