Roo-Code/MONOREPO.md
2025-06-04 09:32:27 -07:00

73 lines
2 KiB
Markdown

# Monorepo Guide
Roo Code has transitioned to a monorepo powered by [PNPM workspaces](https://pnpm.io/workspaces) and [Turborepo](https://turborepo.com).
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](https://pnpm.io/installation) instructions. If you're on MacOS the easiest option is to use Homebrew:
```sh
brew install pnpm
```
Once pnpm is installed you should wipe out your existing node_modules directories for a fresh start:
```sh
# This is optional, but recommended.
find . -name node_modules | xargs rm -rvf
```
And then install your packages:
```sh
pnpm install
```
If things are in good working order then you should be able to build a vsix and install it in VSCode:
```sh
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:
```sh
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]