Improve turbo task dependency declarations (#4323)

This commit is contained in:
Chris Estreich 2025-06-04 09:32:27 -07:00 committed by GitHub
parent 664346e34b
commit 73f39616c3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 118 additions and 38 deletions

View file

@ -36,7 +36,7 @@ jobs:
- name: Package Extension - name: Package Extension
run: | run: |
current_package_version=$(node -p "require('./src/package.json').version") current_package_version=$(node -p "require('./src/package.json').version")
pnpm build pnpm vsix
# Save VSIX contents to a temporary file to avoid broken pipe issues. # Save VSIX contents to a temporary file to avoid broken pipe issues.
unzip -l bin/roo-cline-${current_package_version}.vsix > /tmp/roo-code-vsix-contents.txt unzip -l bin/roo-cline-${current_package_version}.vsix > /tmp/roo-code-vsix-contents.txt

View file

@ -46,7 +46,7 @@ jobs:
console.log(`🔖 Nightly version set to ${pkg.version}`); console.log(`🔖 Nightly version set to ${pkg.version}`);
EOF EOF
- name: Build VSIX - name: Build VSIX
run: pnpm build:nightly # Produces bin/roo-code-nightly-0.0.[count].vsix run: pnpm vsix:nightly # Produces bin/roo-code-nightly-0.0.[count].vsix
- name: Publish to VS Code Marketplace - name: Publish to VS Code Marketplace
env: env:
VSCE_PAT: ${{ secrets.VSCE_PAT }} VSCE_PAT: ${{ secrets.VSCE_PAT }}

View file

@ -24,7 +24,7 @@ pnpm install
If things are in good working order then you should be able to build a vsix and install it in VSCode: If things are in good working order then you should be able to build a vsix and install it in VSCode:
```sh ```sh
pnpm build -- --out ../bin/roo-code-main.vsix && \ pnpm vsix -- --out ../bin/roo-code-main.vsix && \
code --install-extension bin/roo-code-main.vsix code --install-extension bin/roo-code-main.vsix
``` ```
@ -34,9 +34,40 @@ To fully stress the monorepo setup, run the following:
pnpm clean && pnpm lint pnpm clean && pnpm lint
pnpm clean && pnpm check-types pnpm clean && pnpm check-types
pnpm clean && pnpm test pnpm clean && pnpm test
pnpm clean && pnpm bundle
pnpm clean && pnpm build 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:bundle
pnpm clean && pnpm npx turbo watch:tsc pnpm clean && pnpm npx turbo watch:tsc
cd apps/vscode-e2e && pnpm test:ci
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]

View file

@ -145,7 +145,7 @@ Changes to the webview will appear immediately. Changes to the core extension wi
Alternatively you can build a .vsix and install it directly in VSCode: Alternatively you can build a .vsix and install it directly in VSCode:
```sh ```sh
pnpm build pnpm vsix
``` ```
A `.vsix` file will appear in the `bin/` directory which can be installed with: A `.vsix` file will appear in the `bin/` directory which can be installed with:

View file

@ -48,10 +48,9 @@ async function main() {
console.log(`[${name}] buildDir: ${buildDir}`) console.log(`[${name}] buildDir: ${buildDir}`)
console.log(`[${name}] distDir: ${distDir}`) console.log(`[${name}] distDir: ${distDir}`)
// Clean build directory before starting new build if (fs.existsSync(distDir)) {
if (fs.existsSync(buildDir)) { console.log(`[${name}] Cleaning dist directory: ${distDir}`)
console.log(`[${name}] Cleaning build directory: ${buildDir}`) fs.rmSync(distDir, { recursive: true, force: true })
fs.rmSync(buildDir, { recursive: true, force: true })
} }
/** /**

View file

@ -0,0 +1,15 @@
{
"$schema": "https://turbo.build/schema.json",
"extends": ["//"],
"tasks": {
"bundle:nightly": {
"dependsOn": ["^build", "@roo-code/vscode-webview#build:nightly"],
"outputs": ["build/**"]
},
"vsix:nightly": {
"dependsOn": ["bundle:nightly"],
"inputs": ["build/**"],
"outputs": ["../../../bin/**"]
}
}
}

View file

@ -1,7 +1,10 @@
import type { NextConfig } from "next" import type { NextConfig } from "next"
const nextConfig: NextConfig = { const nextConfig: NextConfig = {
/* config options here */ webpack: (config) => {
config.resolve.extensionAlias = { ".js": [".ts", ".tsx", ".js", ".jsx"] }
return config
},
} }
export default nextConfig export default nextConfig

View file

@ -1,6 +1,7 @@
{ {
"name": "@roo-code/web-evals", "name": "@roo-code/web-evals",
"private": true, "version": "0.0.0",
"type": "module",
"scripts": { "scripts": {
"lint": "next lint", "lint": "next lint",
"check-types": "tsc -b", "check-types": "tsc -b",

10
apps/web-evals/turbo.json Normal file
View file

@ -0,0 +1,10 @@
{
"$schema": "https://turbo.build/schema.json",
"extends": ["//"],
"tasks": {
"build": {
"outputs": [".next/**"],
"inputs": ["src/**", "package.json", "tsconfig.json", "next.config.ts"]
}
}
}

View file

@ -0,0 +1,10 @@
{
"$schema": "https://turbo.build/schema.json",
"extends": ["//"],
"tasks": {
"build": {
"outputs": [".next/**"],
"inputs": ["src/**", "package.json", "tsconfig.json", "next.config.ts"]
}
}
}

View file

@ -13,10 +13,11 @@
"check-types": "turbo check-types --log-order grouped --output-logs new-only", "check-types": "turbo check-types --log-order grouped --output-logs new-only",
"test": "turbo test --log-order grouped --output-logs new-only", "test": "turbo test --log-order grouped --output-logs new-only",
"format": "turbo format --log-order grouped --output-logs new-only", "format": "turbo format --log-order grouped --output-logs new-only",
"build": "turbo build --log-order grouped --output-logs new-only",
"bundle": "turbo bundle --log-order grouped --output-logs new-only", "bundle": "turbo bundle --log-order grouped --output-logs new-only",
"bundle:nightly": "turbo bundle:nightly --log-order grouped --output-logs new-only", "bundle:nightly": "turbo bundle:nightly --log-order grouped --output-logs new-only",
"build": "turbo vsix --log-order grouped --output-logs new-only", "vsix": "turbo vsix --log-order grouped --output-logs new-only",
"build:nightly": "turbo vsix:nightly --log-order grouped --output-logs new-only", "vsix:nightly": "turbo vsix:nightly --log-order grouped --output-logs new-only",
"clean": "turbo clean --log-order grouped --output-logs new-only && rimraf dist out bin .vite-port .turbo", "clean": "turbo clean --log-order grouped --output-logs new-only && rimraf dist out bin .vite-port .turbo",
"changeset:version": "cp CHANGELOG.md src/CHANGELOG.md && changeset version && cp -vf src/CHANGELOG.md .", "changeset:version": "cp CHANGELOG.md src/CHANGELOG.md && changeset version && cp -vf src/CHANGELOG.md .",
"knip": "knip --include files", "knip": "knip --include files",

View file

@ -350,7 +350,7 @@
"publish:marketplace": "vsce publish --no-dependencies && ovsx publish --no-dependencies", "publish:marketplace": "vsce publish --no-dependencies && ovsx publish --no-dependencies",
"watch:bundle": "pnpm bundle --watch", "watch:bundle": "pnpm bundle --watch",
"watch:tsc": "tsc --noEmit --watch --project tsconfig.json", "watch:tsc": "tsc --noEmit --watch --project tsconfig.json",
"clean": "rimraf README.md CHANGELOG.md LICENSE dist webview-ui out mock .turbo" "clean": "rimraf README.md CHANGELOG.md LICENSE dist mock .turbo"
}, },
"dependencies": { "dependencies": {
"@anthropic-ai/bedrock-sdk": "^0.10.2", "@anthropic-ai/bedrock-sdk": "^0.10.2",

19
src/turbo.json Normal file
View file

@ -0,0 +1,19 @@
{
"$schema": "https://turbo.build/schema.json",
"extends": ["//"],
"tasks": {
"bundle": {
"dependsOn": ["^build", "@roo-code/vscode-webview#build"],
"outputs": ["dist/**"]
},
"vsix": {
"dependsOn": ["bundle"],
"inputs": ["dist/**"],
"outputs": ["../bin/**"]
},
"watch:bundle": {
"dependsOn": ["@roo-code/build#build", "@roo-code/types#build"],
"cache": false
}
}
}

View file

@ -12,28 +12,7 @@
}, },
"build": { "build": {
"outputs": ["dist/**"], "outputs": ["dist/**"],
"inputs": ["src/**", "package.json", "tsconfig.json", "tsup.config.ts"] "inputs": ["src/**", "package.json", "tsconfig.json", "tsup.config.ts", "vite.config.ts"]
},
"build:nightly": {},
"bundle": {
"dependsOn": ["^build"],
"cache": false
},
"bundle:nightly": {
"dependsOn": ["^build"],
"cache": false
},
"vsix": {
"dependsOn": ["bundle", "@roo-code/vscode-webview#build"],
"cache": false
},
"vsix:nightly": {
"dependsOn": ["bundle:nightly", "@roo-code/vscode-webview#build:nightly"],
"cache": false
},
"watch:bundle": {
"dependsOn": ["@roo-code/build#build", "@roo-code/types#build"],
"cache": false
}, },
"watch:tsc": { "watch:tsc": {
"cache": false "cache": false

View file

@ -14,7 +14,7 @@
"preview": "vite preview", "preview": "vite preview",
"storybook": "storybook dev -p 6006", "storybook": "storybook dev -p 6006",
"build-storybook": "storybook build", "build-storybook": "storybook build",
"clean": "rimraf build tsconfig.tsbuildinfo .turbo" "clean": "rimraf ../src/webview-ui/build ../apps/vscode-nightly/build/webview-ui tsconfig.tsbuildinfo .turbo"
}, },
"dependencies": { "dependencies": {
"@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-alert-dialog": "^1.1.6",

12
webview-ui/turbo.json Normal file
View file

@ -0,0 +1,12 @@
{
"$schema": "https://turbo.build/schema.json",
"extends": ["//"],
"tasks": {
"build": {
"outputs": ["../src/webview-ui/**"]
},
"build:nightly": {
"outputs": ["../apps/vscode-nightly/build/webview-ui/**"]
}
}
}