Skip to content

build: upgrade Turborepo to 2.11 - #1152

Open
nealrichardson wants to merge 1 commit into
quarto-dev:mainfrom
nealrichardson:build/turbo-2
Open

nealrichardson wants to merge 1 commit into
quarto-dev:mainfrom
nealrichardson:build/turbo-2

Conversation

@nealrichardson

Copy link
Copy Markdown
Contributor

Phase 0.4 of the dependency upgrade. It's independent of #1149 (Node 24) and #1150 (TypeScript 5.9). The only overlap is that this PR and #1149 both edit the root package.json, which is a trivial merge.

Changes

  • turbo ^1.8.5 → ^2.11.4. In turbo.json, pipeline becomes tasks, the $schema is https://turborepo.dev/schema.json, and dev gets persistent: true (every dev script is a watcher).
  • Root package.json: "packageManager": "yarn@1.22.22". Turbo 2 refuses to run without it, and the codemod doesn't add it. With corepack enable, this also pins Yarn to 1.22.22.
  • Removed eslint-config-turbo from eslint-config-custom-server. Nothing extends it, and its turbo >2 peer was unmet under turbo 1. The lockfile also drops eslint-plugin-turbo and dotenv.
  • VS Code tasks (apps/vscode 'Run Extension' pre-launch task calls a nonexistent watch script #1141). Both apps/vscode/.vscode/tasks.json (the Run Extension pre-launch task) and the root .vscode/tasks.json ran a watch script that doesn't exist. Both now run yarn dev-vscode from the repo root. $tsc-watch never matches esbuild output, so it's replaced with a background matcher: it begins on turbo's Packages in scope line and ends on quarto:dev: [watch] build finished. I checked both patterns against real dev-vscode output.
  • apps/vscode/CONTRIBUTING.md: the debug steps named the root launch configs (Run VS Code Extension, Attach to VS Code LSP Server) but said to open apps/vscode. They now say to open the repo root, and mention Run Extension from apps/vscode as an alternative.
  • CLAUDE.md: "pipeline" wording → "task".

Not included: the optional panmirror#build env task (PANMIRROR_OUTDIR; RStudio runs panmirror's build directly, not through turbo) and the cross-package outputs fix (#1144). I kept strict env mode: the only build-time env read inside a turbo task is PANMIRROR_OUTDIR.

Verification (local, Node 24.21.0, Yarn 1.22.22)

  • --filter quarto... --dry=json selects apps/vscode plus its dependencies. It doesn't select the root, even though the root is also named quarto. --filter='./packages/*' selects the same 5 test suites as before.
  • yarn build: 14/14 tasks. A second run gets 14 cached, FULL TURBO. The pre-existing no output files found for task quarto-lsp#build warning is Turbo: lsp/markdownit/editor builds write outside declared outputs, so cache hits don't restore them #1144.
  • yarn build-vscode: out/main.js, out/lsp/lsp.js, out/markdownit/ and assets/www/editor/index.js are all present.
  • cd apps/vscode && yarn run vscode:prepublish, then vsce package: produces a VSIX.
  • yarn dev-vscode: all four watchers (quarto, quarto-lsp, quarto-vscode-editor, quarto-vscode-markdownit) start, and stopping it leaves no stray processes. I didn't exercise F5 through the new pre-launch task interactively, so that's worth a quick try in review.
  • yarn lint --continue: same as main. The only failures are the 6 pre-existing no-unused-vars errors in quarto-lsp.
  • yarn test-packages: 8/8 tasks.
  • yarn test-vscode (VS Code 1.109, Quarto CLI on PATH): main label 150 passing, 0 failing; r-project label 3/3.

Fixes #1141.

🤖 Generated with Claude Code

@posit-snyk-bot

posit-snyk-bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

✅ Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
✅ Open Source Security 0 0 0 0 0 issues
✅ Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

- turbo ^2.11.4; turbo.json `pipeline` -> `tasks`, new $schema URL,
  `dev` marked `persistent: true` (every dev script is a watcher)
- Root `packageManager: "yarn@1.22.22"`, which turbo 2 requires
- Drop the unused `eslint-config-turbo` (nothing extends it, and its
  turbo >2 peer was unmet under turbo 1)
- VS Code tasks: the default build task in apps/vscode and the root task
  ran a `watch` script that doesn't exist. They now run `yarn dev-vscode`
  with a background matcher keyed on the esbuild watcher's output, in
  place of `$tsc-watch`.
- CONTRIBUTING: the debug steps name the root launch configs, so say to
  open the repo root (or use `Run Extension` from apps/vscode).
- CLAUDE.md: "pipeline" -> "task" wording

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

apps/vscode 'Run Extension' pre-launch task calls a nonexistent watch script

2 participants