From c9842ecff9cf63dfaf6ce0b1be6f4f6d4d491f3f Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Tue, 28 Jul 2026 14:21:17 -0700 Subject: [PATCH 1/4] refactor: Move repository tasks into Turbo configuration --- apps/agents/package.json | 4 +- apps/agents/turbo.json | 3 + apps/docs/package.json | 9 +-- apps/docs/turbo.json | 50 +++++++++++++++- examples/package.json | 5 -- examples/turbo.json | 17 +++++- lockfile-tests/package.json | 3 - lockfile-tests/turbo.json | 3 +- package.json | 15 +---- packages/create-turbo/package.json | 6 -- packages/create-turbo/turbo.json | 20 ++++++- packages/eslint-config-turbo/package.json | 5 -- packages/eslint-config-turbo/turbo.json | 23 ++++++++ packages/eslint-plugin-turbo/package.json | 6 -- packages/eslint-plugin-turbo/turbo.json | 26 ++++++++- packages/turbo-codemod/package.json | 6 -- packages/turbo-codemod/turbo.json | 26 +++++++++ packages/turbo-gen/package.json | 6 -- packages/turbo-gen/turbo.json | 17 ++++-- packages/turbo-ignore/package.json | 6 -- packages/turbo-ignore/turbo.json | 26 +++++++++ packages/turbo-releaser/package.json | 5 +- packages/turbo-releaser/turbo.json | 17 ++++++ packages/turbo-repository/package.json | 5 +- packages/turbo-repository/turbo.json | 11 +++- packages/turbo-telemetry/package.json | 5 -- packages/turbo-telemetry/turbo.json | 23 ++++++++ packages/turbo-test-utils/package.json | 4 -- packages/turbo-test-utils/turbo.json | 20 +++++++ packages/turbo-types/package.json | 9 --- packages/turbo-types/turbo.json | 69 +++++++++++++++++++++-- packages/turbo-utils/package.json | 5 -- packages/turbo-utils/turbo.json | 23 ++++++++ packages/turbo-vsc/package.json | 5 -- packages/turbo-vsc/turbo.json | 42 ++++++++++++++ packages/turbo-workspaces/package.json | 7 --- packages/turbo-workspaces/turbo.json | 28 ++++++++- turbo.json | 43 +++++++++++--- 38 files changed, 464 insertions(+), 139 deletions(-) create mode 100644 packages/eslint-config-turbo/turbo.json create mode 100644 packages/turbo-codemod/turbo.json create mode 100644 packages/turbo-ignore/turbo.json create mode 100644 packages/turbo-telemetry/turbo.json create mode 100644 packages/turbo-test-utils/turbo.json create mode 100644 packages/turbo-utils/turbo.json create mode 100644 packages/turbo-vsc/turbo.json diff --git a/apps/agents/package.json b/apps/agents/package.json index d80dbf6a22554..39cb139f7566a 100644 --- a/apps/agents/package.json +++ b/apps/agents/package.json @@ -8,10 +8,8 @@ }, "scripts": { "build": "eve build", - "check-types": "tsgo", "dev": "eve dev", - "start": "eve start", - "typecheck": "tsgo" + "start": "eve start" }, "dependencies": { "@vercel/connect": "0.4.2", diff --git a/apps/agents/turbo.json b/apps/agents/turbo.json index 5f26391f1d5d0..8e62a0f28b833 100644 --- a/apps/agents/turbo.json +++ b/apps/agents/turbo.json @@ -3,6 +3,9 @@ "tasks": { "build": { "outputs": [".eve/**", ".vercel/**"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsgo"] } } } diff --git a/apps/docs/package.json b/apps/docs/package.json index f14485cb28b6b..b576680157560 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -6,16 +6,9 @@ "scripts": { "build": "next build", "check-links": "cd content && node --experimental-strip-types ../../../docs/link-checker/src/validate-docs-links.ts", - "check-openapi": "node --experimental-strip-types scripts/generate-openapi-docs.ts --check", - "check-types": "next typegen && fumadocs-mdx && tsc --noEmit", - "collect-examples-data": "node --experimental-strip-types ./scripts/collect-examples-data.ts", "dev": "next dev", - "generate:openapi": "node --experimental-strip-types scripts/generate-openapi-docs.ts", - "lint": "fumadocs-mdx", "postinstall": "fumadocs-mdx", - "schema": "node --experimental-strip-types scripts/copy-json-schema.ts", - "start": "next start", - "translate": "npx @vercel/geistdocs translate" + "start": "next start" }, "dependencies": { "@icons-pack/react-simple-icons": "^13.8.0", diff --git a/apps/docs/turbo.json b/apps/docs/turbo.json index b03b26b5ee098..48384cc4c9404 100644 --- a/apps/docs/turbo.json +++ b/apps/docs/turbo.json @@ -23,11 +23,21 @@ "dependsOn": ["@turbo/types#build"], "inputs": ["scripts/copy-json-schema.ts"], "outputs": ["public/schema*.json"], - "env": [] + "env": [], + "command": [ + "node", + "--experimental-strip-types", + "scripts/copy-json-schema.ts" + ] }, "collect-examples-data": { - "cache": false + "cache": false, + "command": [ + "node", + "--experimental-strip-types", + "scripts/collect-examples-data.ts" + ] }, "check-links": { "inputs": [ @@ -37,7 +47,41 @@ "cache": false }, "check-types": { - "dependsOn": ["collect-examples-data"] + "dependsOn": ["collect-examples-data", "check-types:mdx"], + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "check-types:next": { + "cache": false, + "command": ["pnpm", "exec", "next", "typegen"] + }, + "check-types:mdx": { + "cache": false, + "dependsOn": ["check-types:next"], + "command": ["pnpm", "exec", "fumadocs-mdx"] + }, + "lint": { + "command": ["pnpm", "exec", "fumadocs-mdx"] + }, + "check-openapi": { + "command": [ + "node", + "--experimental-strip-types", + "scripts/generate-openapi-docs.ts", + "--check" + ] + }, + "generate:openapi": { + "cache": false, + "command": [ + "node", + "--experimental-strip-types", + "scripts/generate-openapi-docs.ts" + ] + }, + "translate": { + "cache": false, + "interactive": true, + "command": ["npx", "@vercel/geistdocs", "translate"] } } } diff --git a/examples/package.json b/examples/package.json index 5f225c29f5edb..27670975b1f61 100644 --- a/examples/package.json +++ b/examples/package.json @@ -1,10 +1,5 @@ { "name": "turborepo-examples", - "scripts": { - "install-all": "tsx install-all.ts", - "update-turbo": "tsx update-turbo.ts", - "check-examples": "tsx --env-file=.env.local check-examples.ts" - }, "devDependencies": { "@vercel/sandbox": "2.5.0", "tsx": "4.21.0" diff --git a/examples/turbo.json b/examples/turbo.json index 93d717ef59ea7..960392f69fa40 100644 --- a/examples/turbo.json +++ b/examples/turbo.json @@ -9,7 +9,22 @@ "inputs": [] }, "check-examples": { - "passThroughEnv": ["VERCEL_TOKEN"] + "passThroughEnv": ["VERCEL_TOKEN"], + "command": [ + "pnpm", + "exec", + "tsx", + "--env-file=.env.local", + "check-examples.ts" + ] + }, + "install-all": { + "cache": false, + "command": ["pnpm", "exec", "tsx", "install-all.ts"] + }, + "update-turbo": { + "cache": false, + "command": ["pnpm", "exec", "tsx", "update-turbo.ts"] } } } diff --git a/lockfile-tests/package.json b/lockfile-tests/package.json index 069b58896a362..94da6e9ef6a93 100644 --- a/lockfile-tests/package.json +++ b/lockfile-tests/package.json @@ -1,9 +1,6 @@ { "name": "lockfile-tests", "private": true, - "scripts": { - "check-lockfiles": "tsx check-lockfiles.ts" - }, "devDependencies": { "tsx": "4.21.0" } diff --git a/lockfile-tests/turbo.json b/lockfile-tests/turbo.json index 51b8fb633568e..0e30db9a37dda 100644 --- a/lockfile-tests/turbo.json +++ b/lockfile-tests/turbo.json @@ -6,7 +6,8 @@ // crate's build task guarantees it exists and re-runs this check // whenever the binary's transitive Rust sources change. "dependsOn": ["turbo#build"], - "passThroughEnv": ["VERCEL_TOKEN"] + "passThroughEnv": ["VERCEL_TOKEN"], + "command": ["pnpm", "exec", "tsx", "check-lockfiles.ts"] } } } diff --git a/package.json b/package.json index fa0dc735daf15..0b28a9c14b9c9 100644 --- a/package.json +++ b/package.json @@ -3,24 +3,11 @@ "version": "0.0.0", "private": true, "scripts": { - "build": "turbo run build", "build:turbo": "cargo build --package turbo", - "build:ts": "tsc -b tsconfig.project.json", - "lint": "pnpm exec oxlint --deny-warnings .", - "lint:fix": "pnpm exec oxlint --fix .", - "format": "oxfmt --check", - "format:fix": "oxfmt .", - "check:toml": "taplo format --check", - "fix:toml": "taplo format", - "docs:dev": "turbo run dev --filter=./apps/docs", "turbo": "pnpm run build:turbo && ./target/debug/turbo", - "turbo-prebuilt": "pnpm -- turbo", "prepare": "husky install", - "test": "turbo run test", "rustdoc": "RUSTDOCFLAGS=\"-Z unstable-options --enable-index-page\" cargo doc --workspace --no-deps --keep-going || true", - "rustdoc:open": "RUSTDOCFLAGS=\"-Z unstable-options --enable-index-page\" cargo doc --workspace --no-deps --keep-going --open", - "check": "ultracite check", - "fix": "ultracite fix" + "rustdoc:open": "RUSTDOCFLAGS=\"-Z unstable-options --enable-index-page\" cargo doc --workspace --no-deps --keep-going --open" }, "devDependencies": { "@taplo/cli": "0.5.2", diff --git a/packages/create-turbo/package.json b/packages/create-turbo/package.json index 4236ba19d0af9..c161327ab9524 100644 --- a/packages/create-turbo/package.json +++ b/packages/create-turbo/package.json @@ -18,12 +18,6 @@ "files": [ "dist" ], - "scripts": { - "build": "tsdown", - "test": "jest", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "@inquirer/prompts": "^7.10.1", "commander": "11.0.0", diff --git a/packages/create-turbo/turbo.json b/packages/create-turbo/turbo.json index 22ccfa04e063e..44772e01bb10c 100644 --- a/packages/create-turbo/turbo.json +++ b/packages/create-turbo/turbo.json @@ -3,10 +3,26 @@ "extends": ["//"], "tasks": { "test": { - "dependsOn": ["build"] + "dependsOn": ["build"], + "command": ["pnpm", "exec", "jest"] }, "build": { - "dependsOn": ["^build"] + "dependsOn": ["^build"], + "command": ["pnpm", "exec", "tsdown"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] } } } diff --git a/packages/eslint-config-turbo/package.json b/packages/eslint-config-turbo/package.json index 629ca1d2de648..3b72ec1ec13fb 100644 --- a/packages/eslint-config-turbo/package.json +++ b/packages/eslint-config-turbo/package.json @@ -47,11 +47,6 @@ } } }, - "scripts": { - "build": "bunchee", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore", - "package:types": "attw --profile node16 --pack" - }, "dependencies": { "eslint-plugin-turbo": "workspace:*" }, diff --git a/packages/eslint-config-turbo/turbo.json b/packages/eslint-config-turbo/turbo.json new file mode 100644 index 0000000000000..67b0e0f122bd3 --- /dev/null +++ b/packages/eslint-config-turbo/turbo.json @@ -0,0 +1,23 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "build": { + "command": ["pnpm", "exec", "bunchee"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] + }, + "package:types": { + "command": ["pnpm", "exec", "attw", "--profile", "node16", "--pack"] + } + } +} diff --git a/packages/eslint-plugin-turbo/package.json b/packages/eslint-plugin-turbo/package.json index 1b8d2fe7ffd98..a7ba38a3fcfef 100644 --- a/packages/eslint-plugin-turbo/package.json +++ b/packages/eslint-plugin-turbo/package.json @@ -24,12 +24,6 @@ ], "main": "./dist/index.js", "types": "./dist/index.d.ts", - "scripts": { - "test": "jest", - "build": "tsdown && tsc -p tsconfig.build.json", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "dotenv": "16.0.3" }, diff --git a/packages/eslint-plugin-turbo/turbo.json b/packages/eslint-plugin-turbo/turbo.json index 012f86fa62a20..20a59316b528f 100644 --- a/packages/eslint-plugin-turbo/turbo.json +++ b/packages/eslint-plugin-turbo/turbo.json @@ -2,9 +2,33 @@ "$schema": "../../docs/public/schema.json", "extends": ["//"], "tasks": { + "build": { + "dependsOn": ["build:bundle"], + "command": ["pnpm", "exec", "tsc", "-p", "tsconfig.build.json"] + }, + "build:bundle": { + "cache": false, + "dependsOn": ["^build"], + "command": ["pnpm", "exec", "tsdown"] + }, "test": { "dependsOn": ["build"], - "passThroughEnv": ["!CI"] + "passThroughEnv": ["!CI"], + "command": ["pnpm", "exec", "jest"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] } } } diff --git a/packages/turbo-codemod/package.json b/packages/turbo-codemod/package.json index 29a3d46f29723..035c6c54c7762 100644 --- a/packages/turbo-codemod/package.json +++ b/packages/turbo-codemod/package.json @@ -19,12 +19,6 @@ "publishConfig": { "access": "public" }, - "scripts": { - "build": "tsdown", - "test": "jest", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "@inquirer/prompts": "^7.10.1", "brace-expansion": "5.0.8", diff --git a/packages/turbo-codemod/turbo.json b/packages/turbo-codemod/turbo.json new file mode 100644 index 0000000000000..6e37becf89530 --- /dev/null +++ b/packages/turbo-codemod/turbo.json @@ -0,0 +1,26 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "build": { + "command": ["pnpm", "exec", "tsdown"] + }, + "test": { + "command": ["pnpm", "exec", "jest"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] + } + } +} diff --git a/packages/turbo-gen/package.json b/packages/turbo-gen/package.json index eb7b58737ca01..0adbebb2c5a95 100644 --- a/packages/turbo-gen/package.json +++ b/packages/turbo-gen/package.json @@ -20,12 +20,6 @@ "publishConfig": { "access": "public" }, - "scripts": { - "build": "tsdown && tsc -p tsconfig.build.json", - "build:embed": "node scripts/embed-templates.mjs", - "test": "jest", - "check-types": "tsc --noEmit" - }, "dependencies": { "@inquirer/prompts": "^7.10.1", "esbuild": "^0.28.1" diff --git a/packages/turbo-gen/turbo.json b/packages/turbo-gen/turbo.json index 07373d1104d06..714d50d7b23cc 100644 --- a/packages/turbo-gen/turbo.json +++ b/packages/turbo-gen/turbo.json @@ -4,17 +4,26 @@ "tasks": { "build:embed": { "outputs": ["src/templates/embedded.ts"], - "inputs": ["src/templates/simple-ts/**", "src/templates/simple-js/**"] + "inputs": ["src/templates/simple-ts/**", "src/templates/simple-js/**"], + "command": ["node", "scripts/embed-templates.mjs"] }, "check-types": { - "dependsOn": ["^build", "build:embed"] + "dependsOn": ["^build", "build:embed"], + "command": ["pnpm", "exec", "tsc", "--noEmit"] }, "test": { - "dependsOn": ["build"] + "dependsOn": ["build"], + "command": ["pnpm", "exec", "jest"] }, "build": { + "dependsOn": ["build:bundle"], + "outputs": ["dist/**"], + "command": ["pnpm", "exec", "tsc", "-p", "tsconfig.build.json"] + }, + "build:bundle": { + "cache": false, "dependsOn": ["^build", "build:embed"], - "outputs": ["dist/**"] + "command": ["pnpm", "exec", "tsdown"] } } } diff --git a/packages/turbo-ignore/package.json b/packages/turbo-ignore/package.json index 34c8e34234a4f..732eaef5d7076 100644 --- a/packages/turbo-ignore/package.json +++ b/packages/turbo-ignore/package.json @@ -18,12 +18,6 @@ "files": [ "dist" ], - "scripts": { - "build": "tsdown", - "test": "jest", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "json5": "2.2.3" }, diff --git a/packages/turbo-ignore/turbo.json b/packages/turbo-ignore/turbo.json new file mode 100644 index 0000000000000..6e37becf89530 --- /dev/null +++ b/packages/turbo-ignore/turbo.json @@ -0,0 +1,26 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "build": { + "command": ["pnpm", "exec", "tsdown"] + }, + "test": { + "command": ["pnpm", "exec", "jest"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] + } + } +} diff --git a/packages/turbo-releaser/package.json b/packages/turbo-releaser/package.json index ed0fdcaeb09b2..1c2f0d2af375a 100644 --- a/packages/turbo-releaser/package.json +++ b/packages/turbo-releaser/package.json @@ -10,10 +10,7 @@ "template" ], "scripts": { - "build": "tsdown", - "check-types": "tsc --noEmit", - "test": "node --import tsx --test src/*.test.ts", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" + "build": "tsdown" }, "dependencies": { "commander": "11.0.0", diff --git a/packages/turbo-releaser/turbo.json b/packages/turbo-releaser/turbo.json index 07dd354a7722d..f5cca55ad788f 100644 --- a/packages/turbo-releaser/turbo.json +++ b/packages/turbo-releaser/turbo.json @@ -4,6 +4,23 @@ "build": { "dependsOn": ["^build"], "outputs": ["dist"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "test": { + "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] } } } diff --git a/packages/turbo-repository/package.json b/packages/turbo-repository/package.json index f83d6130feb66..a92a501141c9b 100644 --- a/packages/turbo-repository/package.json +++ b/packages/turbo-repository/package.json @@ -10,10 +10,7 @@ "author": "", "main": "dist/index.js", "scripts": { - "build": "bash scripts/build.sh --dts ../js/index.d.ts", - "build:release": "bash scripts/build.sh --release", - "package": "node scripts/publish.mjs", - "test": "node --import tsx --test __tests__/*.test.ts" + "build:release": "bash scripts/build.sh --release" }, "devDependencies": { "@napi-rs/cli": "2.16.3", diff --git a/packages/turbo-repository/turbo.json b/packages/turbo-repository/turbo.json index f4e1cab0d028c..7ae8cbdc9efaf 100644 --- a/packages/turbo-repository/turbo.json +++ b/packages/turbo-repository/turbo.json @@ -10,10 +10,17 @@ // longer participates in the hash. "dependsOn": ["turborepo-napi#build"], "env": ["NODE_VERSION", "RUSTFLAGS"], - "outputs": ["js/dist/**/*", "native/**/*"] + "outputs": ["js/dist/**/*", "native/**/*"], + "command": ["bash", "scripts/build.sh", "--dts", "../js/index.d.ts"] }, "test": { - "dependsOn": ["build"] + "dependsOn": ["build"], + "command": ["node", "--import", "tsx", "--test", "__tests__/*.test.ts"] + }, + "package": { + "cache": false, + "dependsOn": ["build"], + "command": ["node", "scripts/publish.mjs"] } } } diff --git a/packages/turbo-telemetry/package.json b/packages/turbo-telemetry/package.json index e546664fa863a..1be3230c28761 100644 --- a/packages/turbo-telemetry/package.json +++ b/packages/turbo-telemetry/package.json @@ -18,11 +18,6 @@ "main": "src/index.ts", "module": "src/index.ts", "types": "src/index.ts", - "scripts": { - "test": "node --import tsx --test src/*.test.ts", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "ci-info": "4.0.0", "got": "11.8.6", diff --git a/packages/turbo-telemetry/turbo.json b/packages/turbo-telemetry/turbo.json new file mode 100644 index 0000000000000..2020d06c276b8 --- /dev/null +++ b/packages/turbo-telemetry/turbo.json @@ -0,0 +1,23 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "test": { + "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] + } + } +} diff --git a/packages/turbo-test-utils/package.json b/packages/turbo-test-utils/package.json index ca69af748644a..7f900c5589911 100644 --- a/packages/turbo-test-utils/package.json +++ b/packages/turbo-test-utils/package.json @@ -16,10 +16,6 @@ "directory": "packages/turbo-test-utils" }, "main": "src/index.ts", - "scripts": { - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettier-ignore" - }, "dependencies": { "fs-extra": "11.1.1", "js-yaml": "4.2.0", diff --git a/packages/turbo-test-utils/turbo.json b/packages/turbo-test-utils/turbo.json new file mode 100644 index 0000000000000..3c5b2eda854d0 --- /dev/null +++ b/packages/turbo-test-utils/turbo.json @@ -0,0 +1,20 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettier-ignore" + ] + } + } +} diff --git a/packages/turbo-types/package.json b/packages/turbo-types/package.json index b74574bd23e78..a5a0de38717e8 100644 --- a/packages/turbo-types/package.json +++ b/packages/turbo-types/package.json @@ -22,15 +22,6 @@ "publishConfig": { "access": "public" }, - "scripts": { - "build": "tsc", - "lint:prettier": "prettier -c . --cache", - "generate-schema": "cargo run -p turborepo-schema-gen -- schema -o schemas/schema.json && cargo run -p turborepo-schema-gen -- typescript -o src/types/config-v2.ts && pnpm exec oxfmt schemas/schema.json src/types/config-v2.ts", - "generate-schema:legacy": "tsx scripts/generate-schema.ts", - "verify-schema": "cargo run -p turborepo-schema-gen -- verify --schema schemas/schema.json --typescript src/types/config-v2.ts", - "copy-schema": "cp schemas/schema.json ../turbo/schema.json", - "package:types": "attw --profile node16 --pack" - }, "devDependencies": { "@arethetypeswrong/cli": "0.18.2", "@turbo/tsconfig": "workspace:*", diff --git a/packages/turbo-types/turbo.json b/packages/turbo-types/turbo.json index 32c89ccb05260..4d95f11a7bafa 100644 --- a/packages/turbo-types/turbo.json +++ b/packages/turbo-types/turbo.json @@ -6,24 +6,83 @@ "topo": {}, "build": { "outputs": ["schemas/**"], - "dependsOn": ["^topo"] + "dependsOn": ["^topo"], + "command": ["pnpm", "exec", "tsc"] + }, + "lint:prettier": { + "command": ["pnpm", "exec", "prettier", "-c", ".", "--cache"] }, "copy-schema": { "dependsOn": ["build"], - "outputs": ["$TURBO_ROOT$/packages/turbo/schema.json"] + "outputs": ["$TURBO_ROOT$/packages/turbo/schema.json"], + "command": ["cp", "schemas/schema.json", "../turbo/schema.json"] }, // Both schema tasks shell out to the turborepo-schema-gen crate; // depending on its build task guarantees the binary exists and re-runs // them whenever the generator's Rust sources change. "generate-schema": { - "dependsOn": ["turborepo-schema-gen#build"], + "dependsOn": ["generate-schema:json", "generate-schema:typescript"], // Writes generated files into the source tree, so it is not a // cacheable artifact producer. - "cache": false + "cache": false, + "command": [ + "pnpm", + "exec", + "oxfmt", + "schemas/schema.json", + "src/types/config-v2.ts" + ] + }, + "generate-schema:json": { + "dependsOn": ["turborepo-schema-gen#build"], + "cache": false, + "command": [ + "cargo", + "run", + "-p", + "turborepo-schema-gen", + "--", + "schema", + "-o", + "schemas/schema.json" + ] + }, + "generate-schema:typescript": { + "dependsOn": ["turborepo-schema-gen#build"], + "cache": false, + "command": [ + "cargo", + "run", + "-p", + "turborepo-schema-gen", + "--", + "typescript", + "-o", + "src/types/config-v2.ts" + ] }, "verify-schema": { "dependsOn": ["turborepo-schema-gen#build"], - "cache": false + "cache": false, + "command": [ + "cargo", + "run", + "-p", + "turborepo-schema-gen", + "--", + "verify", + "--schema", + "schemas/schema.json", + "--typescript", + "src/types/config-v2.ts" + ] + }, + "package:types": { + "command": ["pnpm", "exec", "attw", "--profile", "node16", "--pack"] + }, + "generate-schema:legacy": { + "cache": false, + "command": ["pnpm", "exec", "tsx", "scripts/generate-schema.ts"] } } } diff --git a/packages/turbo-utils/package.json b/packages/turbo-utils/package.json index 9b10876e8a1b9..98dd5139af90b 100644 --- a/packages/turbo-utils/package.json +++ b/packages/turbo-utils/package.json @@ -22,11 +22,6 @@ "main": "src/index.ts", "module": "src/index.ts", "types": "src/index.ts", - "scripts": { - "test": "jest", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "undici": "^6.27.0" }, diff --git a/packages/turbo-utils/turbo.json b/packages/turbo-utils/turbo.json new file mode 100644 index 0000000000000..9dd769b89b923 --- /dev/null +++ b/packages/turbo-utils/turbo.json @@ -0,0 +1,23 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "test": { + "command": ["pnpm", "exec", "jest"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] + } + } +} diff --git a/packages/turbo-vsc/package.json b/packages/turbo-vsc/package.json index e5bbe1228706d..8d77574dea1b0 100644 --- a/packages/turbo-vsc/package.json +++ b/packages/turbo-vsc/package.json @@ -27,10 +27,6 @@ "scripts": { "vscode:prepublish": "npm run esbuild-base -- --minify", "esbuild-base": "esbuild ./src/extension.ts --bundle --main-fields=module,main --outfile=out/main.js --external:vscode --format=cjs --platform=node", - "esbuild": "npm run esbuild-base -- --sourcemap", - "esbuild-watch": "npm run esbuild-base -- --sourcemap --watch", - "package": "pnpm vsce package --no-dependencies --baseContentUrl https://github.com/vercel/turborepo/raw/HEAD/packages/turbo-vsc", - "publish": "pnpm vsce publish --no-dependencies --baseContentUrl https://github.com/vercel/turborepo/raw/HEAD/packages/turbo-vsc", "copy-darwin-arm64": "cp out/artifacts/turborepo-lsp-aarch64-apple-darwin/turborepo-lsp out/turborepo-lsp-darwin-arm64 && chmod +x out/turborepo-lsp-darwin-arm64", "copy-darwin-x64": "cp out/artifacts/turborepo-lsp-x86_64-apple-darwin/turborepo-lsp out/turborepo-lsp-darwin-x64 && chmod +x out/turborepo-lsp-darwin-x64", "copy-win32-x64": "cp out/artifacts/turborepo-lsp-x86_64-pc-windows-msvc/turborepo-lsp.exe out/turborepo-lsp-win32-x64.exe", @@ -38,7 +34,6 @@ "copy-linux-x64": "cp out/artifacts/turborepo-lsp-x86_64-unknown-linux-musl/turborepo-lsp out/turborepo-lsp-linux-x64 && chmod +x out/turborepo-lsp-linux-x64", "copy-win32-arm64": "cp out/artifacts/turborepo-lsp-aarch64-pc-windows-msvc/turborepo-lsp.exe out/turborepo-lsp-win32-arm64.exe", "copy": "pnpm run copy-darwin-arm64 && pnpm run copy-darwin-x64 && pnpm run copy-win32-arm64 && pnpm run copy-win32-x64 && pnpm run copy-linux-arm64 && pnpm run copy-linux-x64", - "test": "node --import tsx --test src/*.test.ts", "check-types": "tsc -p ./ --noEmit" }, "dependencies": { diff --git a/packages/turbo-vsc/turbo.json b/packages/turbo-vsc/turbo.json new file mode 100644 index 0000000000000..b5919879247e4 --- /dev/null +++ b/packages/turbo-vsc/turbo.json @@ -0,0 +1,42 @@ +{ + "$schema": "../../docs/public/schema.json", + "extends": ["//"], + "tasks": { + "test": { + "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] + }, + "esbuild": { + "outputs": ["out/main.js", "out/main.js.map"], + "command": ["npm", "run", "esbuild-base", "--", "--sourcemap"] + }, + "esbuild-watch": { + "cache": false, + "persistent": true, + "command": ["npm", "run", "esbuild-base", "--", "--sourcemap", "--watch"] + }, + "package": { + "cache": false, + "command": [ + "pnpm", + "exec", + "vsce", + "package", + "--no-dependencies", + "--baseContentUrl", + "https://github.com/vercel/turborepo/raw/HEAD/packages/turbo-vsc" + ] + }, + "publish": { + "cache": false, + "command": [ + "pnpm", + "exec", + "vsce", + "publish", + "--no-dependencies", + "--baseContentUrl", + "https://github.com/vercel/turborepo/raw/HEAD/packages/turbo-vsc" + ] + } + } +} diff --git a/packages/turbo-workspaces/package.json b/packages/turbo-workspaces/package.json index 54b14192ec960..80f3042ad044b 100644 --- a/packages/turbo-workspaces/package.json +++ b/packages/turbo-workspaces/package.json @@ -22,13 +22,6 @@ "publishConfig": { "access": "public" }, - "scripts": { - "build": "tsdown && tsc -p tsconfig.build.json", - "dev": "tsdown --watch", - "test": "jest", - "check-types": "tsc --noEmit", - "lint:prettier": "prettier -c . --cache --ignore-path=../../.prettierignore" - }, "dependencies": { "@inquirer/prompts": "^7.10.1", "commander": "10.0.0", diff --git a/packages/turbo-workspaces/turbo.json b/packages/turbo-workspaces/turbo.json index 786b47bc5d41d..b3fadbd0f043d 100644 --- a/packages/turbo-workspaces/turbo.json +++ b/packages/turbo-workspaces/turbo.json @@ -3,7 +3,33 @@ "extends": ["//"], "tasks": { "build": { - "dependsOn": ["^build"] + "dependsOn": ["build:bundle"], + "command": ["pnpm", "exec", "tsc", "-p", "tsconfig.build.json"] + }, + "build:bundle": { + "cache": false, + "dependsOn": ["^build"], + "command": ["pnpm", "exec", "tsdown"] + }, + "dev": { + "command": ["pnpm", "exec", "tsdown", "--watch"] + }, + "test": { + "command": ["pnpm", "exec", "jest"] + }, + "check-types": { + "command": ["pnpm", "exec", "tsc", "--noEmit"] + }, + "lint:prettier": { + "command": [ + "pnpm", + "exec", + "prettier", + "-c", + ".", + "--cache", + "--ignore-path=../../.prettierignore" + ] } } } diff --git a/turbo.json b/turbo.json index 35383c988d18b..e38304b27bb62 100644 --- a/turbo.json +++ b/turbo.json @@ -66,8 +66,16 @@ "--no-fail-fast" ] }, + "turborepo-crates#format": { + "command": ["cargo", "fmt", "--check"] + }, + // Match the stricter cargo alias used by the Rust lint CI job. + "turborepo-crates#lint": { + "cache": false, + "command": ["cargo", "lint"] + }, - // docs lint task runs fumadocs-mdx to generate types before oxlint + // docs lint task runs fumadocs-mdx "docs#lint": {}, "//#quality": { "dependsOn": [ @@ -81,13 +89,24 @@ ] }, "//#lint": { - "inputs": ["!pnpm-lock.yaml"] + "inputs": ["!pnpm-lock.yaml"], + "command": ["pnpm", "exec", "oxlint", "--deny-warnings", "."] + }, + "//#lint:fix": { + "command": ["pnpm", "exec", "oxlint", "--fix", "."] + }, + "//#format": { + "command": ["pnpm", "exec", "oxfmt", "--check"] + }, + "//#format:fix": { + "command": ["pnpm", "exec", "oxfmt", "."] + }, + "//#check:toml": { + "command": ["pnpm", "exec", "taplo", "format", "--check"] + }, + "//#fix:toml": { + "command": ["pnpm", "exec", "taplo", "format"] }, - "//#lint:fix": {}, - "//#format": {}, - "//#format:fix": {}, - "//#check:toml": {}, - "//#fix:toml": {}, "//#quality:fix": { "dependsOn": ["//#lint:fix", "//#format:fix", "//#fix:toml"] }, @@ -96,7 +115,15 @@ }, "check-openapi": {}, "//#build:ts": { - "outputs": ["packages/**/dist"] + "outputs": ["packages/**/dist"], + "command": ["pnpm", "exec", "tsc", "-b", "tsconfig.project.json"] + }, + "//#check": { + "command": ["pnpm", "exec", "ultracite", "check"] + }, + "//#fix": { + "cache": false, + "command": ["pnpm", "exec", "ultracite", "fix"] }, "build:ts": { "outputs": ["dist/**/*"] From eac413c40e0db60fe5a925941d88573f264bcf46 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Tue, 28 Jul 2026 14:33:49 -0700 Subject: [PATCH 2/4] refactor: Share TypeScript check command --- examples/turbo.json | 3 +++ lockfile-tests/turbo.json | 3 +++ packages/create-turbo/turbo.json | 3 --- packages/eslint-plugin-turbo/turbo.json | 3 --- packages/turbo-codemod/turbo.json | 3 --- packages/turbo-gen/turbo.json | 3 +-- packages/turbo-ignore/turbo.json | 3 --- packages/turbo-releaser/turbo.json | 3 --- packages/turbo-repository/turbo.json | 3 +++ packages/turbo-telemetry/turbo.json | 3 --- packages/turbo-test-utils/turbo.json | 3 --- packages/turbo-utils/turbo.json | 3 --- packages/turbo-workspaces/turbo.json | 3 --- turbo.json | 14 +++++++++++++- 14 files changed, 23 insertions(+), 30 deletions(-) diff --git a/examples/turbo.json b/examples/turbo.json index 960392f69fa40..46201861d5209 100644 --- a/examples/turbo.json +++ b/examples/turbo.json @@ -8,6 +8,9 @@ "lint:prettier": { "inputs": [] }, + "check-types": { + "command": null + }, "check-examples": { "passThroughEnv": ["VERCEL_TOKEN"], "command": [ diff --git a/lockfile-tests/turbo.json b/lockfile-tests/turbo.json index 0e30db9a37dda..c027927d2d869 100644 --- a/lockfile-tests/turbo.json +++ b/lockfile-tests/turbo.json @@ -1,6 +1,9 @@ { "extends": ["//"], "tasks": { + "check-types": { + "command": null + }, "check-lockfiles": { // The harness runs the turbo binary from target/; depending on the // crate's build task guarantees it exists and re-runs this check diff --git a/packages/create-turbo/turbo.json b/packages/create-turbo/turbo.json index 44772e01bb10c..a056fe9cba2a6 100644 --- a/packages/create-turbo/turbo.json +++ b/packages/create-turbo/turbo.json @@ -10,9 +10,6 @@ "dependsOn": ["^build"], "command": ["pnpm", "exec", "tsdown"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/eslint-plugin-turbo/turbo.json b/packages/eslint-plugin-turbo/turbo.json index 20a59316b528f..7aeea43dcc2db 100644 --- a/packages/eslint-plugin-turbo/turbo.json +++ b/packages/eslint-plugin-turbo/turbo.json @@ -16,9 +16,6 @@ "passThroughEnv": ["!CI"], "command": ["pnpm", "exec", "jest"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/turbo-codemod/turbo.json b/packages/turbo-codemod/turbo.json index 6e37becf89530..39b05d3da25db 100644 --- a/packages/turbo-codemod/turbo.json +++ b/packages/turbo-codemod/turbo.json @@ -8,9 +8,6 @@ "test": { "command": ["pnpm", "exec", "jest"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/turbo-gen/turbo.json b/packages/turbo-gen/turbo.json index 714d50d7b23cc..fc6e5ff2ae3c3 100644 --- a/packages/turbo-gen/turbo.json +++ b/packages/turbo-gen/turbo.json @@ -8,8 +8,7 @@ "command": ["node", "scripts/embed-templates.mjs"] }, "check-types": { - "dependsOn": ["^build", "build:embed"], - "command": ["pnpm", "exec", "tsc", "--noEmit"] + "dependsOn": ["^build", "build:embed"] }, "test": { "dependsOn": ["build"], diff --git a/packages/turbo-ignore/turbo.json b/packages/turbo-ignore/turbo.json index 6e37becf89530..39b05d3da25db 100644 --- a/packages/turbo-ignore/turbo.json +++ b/packages/turbo-ignore/turbo.json @@ -8,9 +8,6 @@ "test": { "command": ["pnpm", "exec", "jest"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/turbo-releaser/turbo.json b/packages/turbo-releaser/turbo.json index f5cca55ad788f..2bb8e47ea101d 100644 --- a/packages/turbo-releaser/turbo.json +++ b/packages/turbo-releaser/turbo.json @@ -5,9 +5,6 @@ "dependsOn": ["^build"], "outputs": ["dist"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "test": { "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] }, diff --git a/packages/turbo-repository/turbo.json b/packages/turbo-repository/turbo.json index 7ae8cbdc9efaf..2e6fae04d6512 100644 --- a/packages/turbo-repository/turbo.json +++ b/packages/turbo-repository/turbo.json @@ -2,6 +2,9 @@ "$schema": "../../docs/public/schema.json", "extends": ["//"], "tasks": { + "check-types": { + "command": null + }, "build": { // The napi crate's build task is a hash-only dependency: it invalidates // this task whenever the crate's transitive Rust sources change without diff --git a/packages/turbo-telemetry/turbo.json b/packages/turbo-telemetry/turbo.json index 2020d06c276b8..3fbc5a05ba94f 100644 --- a/packages/turbo-telemetry/turbo.json +++ b/packages/turbo-telemetry/turbo.json @@ -5,9 +5,6 @@ "test": { "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/turbo-test-utils/turbo.json b/packages/turbo-test-utils/turbo.json index 3c5b2eda854d0..3542a2c46d6c7 100644 --- a/packages/turbo-test-utils/turbo.json +++ b/packages/turbo-test-utils/turbo.json @@ -2,9 +2,6 @@ "$schema": "../../docs/public/schema.json", "extends": ["//"], "tasks": { - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/turbo-utils/turbo.json b/packages/turbo-utils/turbo.json index 9dd769b89b923..4aa307ba85025 100644 --- a/packages/turbo-utils/turbo.json +++ b/packages/turbo-utils/turbo.json @@ -5,9 +5,6 @@ "test": { "command": ["pnpm", "exec", "jest"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/packages/turbo-workspaces/turbo.json b/packages/turbo-workspaces/turbo.json index b3fadbd0f043d..6d15e69f43c3b 100644 --- a/packages/turbo-workspaces/turbo.json +++ b/packages/turbo-workspaces/turbo.json @@ -17,9 +17,6 @@ "test": { "command": ["pnpm", "exec", "jest"] }, - "check-types": { - "command": ["pnpm", "exec", "tsc", "--noEmit"] - }, "lint:prettier": { "command": [ "pnpm", diff --git a/turbo.json b/turbo.json index e38304b27bb62..8d5514e9ee4d5 100644 --- a/turbo.json +++ b/turbo.json @@ -111,7 +111,19 @@ "dependsOn": ["//#lint:fix", "//#format:fix", "//#fix:toml"] }, "check-types": { - "dependsOn": ["^build"] + "dependsOn": ["^build"], + "command": { + "javascript": ["pnpm", "exec", "tsc", "--noEmit"] + } + }, + "@turbo/tsconfig#check-types": { + "command": null + }, + "@repo/docs-link-checker#check-types": { + "command": null + }, + "eslint-config-turbo#check-types": { + "command": null }, "check-openapi": {}, "//#build:ts": { From 23e63f9069543900f940edf6a0bbc77f6268ca78 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Tue, 28 Jul 2026 16:58:41 -0700 Subject: [PATCH 3/4] fix: Preserve migrated task behavior --- .../fixtures/pnpm6turbo/pnpm-lock.yaml | 2 +- packages/turbo-releaser/turbo.json | 17 ++++++++++++++++- packages/turbo-repository/turbo.json | 12 +++++++++++- packages/turbo-telemetry/turbo.json | 10 +++++++++- packages/turbo-vsc/turbo.json | 10 +++++++++- 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/lockfile-tests/fixtures/pnpm6turbo/pnpm-lock.yaml b/lockfile-tests/fixtures/pnpm6turbo/pnpm-lock.yaml index 9e3c7ad0b62cb..fff1b4dd29daa 100644 --- a/lockfile-tests/fixtures/pnpm6turbo/pnpm-lock.yaml +++ b/lockfile-tests/fixtures/pnpm6turbo/pnpm-lock.yaml @@ -1,7 +1,7 @@ lockfileVersion: '6.0' settings: - autoInstallPeers: true + autoInstallPeers: false excludeLinksFromLockfile: false importers: diff --git a/packages/turbo-releaser/turbo.json b/packages/turbo-releaser/turbo.json index 2bb8e47ea101d..3558fa93d08f5 100644 --- a/packages/turbo-releaser/turbo.json +++ b/packages/turbo-releaser/turbo.json @@ -6,7 +6,22 @@ "outputs": ["dist"] }, "test": { - "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] + "command": [ + "node", + "--import", + "tsx", + "--test", + "src/e2e.test.ts", + "src/native.test.ts", + "src/npm.test.ts", + "src/operations.test.ts", + "src/packager.test.ts", + "src/publish.test.ts", + "src/stage.test.ts", + "src/tag.test.ts", + "src/version-command.test.ts", + "src/version.test.ts" + ] }, "lint:prettier": { "command": [ diff --git a/packages/turbo-repository/turbo.json b/packages/turbo-repository/turbo.json index 2e6fae04d6512..760d0b06bbaf5 100644 --- a/packages/turbo-repository/turbo.json +++ b/packages/turbo-repository/turbo.json @@ -18,7 +18,17 @@ }, "test": { "dependsOn": ["build"], - "command": ["node", "--import", "tsx", "--test", "__tests__/*.test.ts"] + "command": [ + "node", + "--import", + "tsx", + "--test", + "__tests__/affected-packages.test.ts", + "__tests__/exports.test.ts", + "__tests__/find-packages.test.ts", + "__tests__/lockfile-packages.test.ts", + "__tests__/workspace.test.ts" + ] }, "package": { "cache": false, diff --git a/packages/turbo-telemetry/turbo.json b/packages/turbo-telemetry/turbo.json index 3fbc5a05ba94f..3331aa4acb605 100644 --- a/packages/turbo-telemetry/turbo.json +++ b/packages/turbo-telemetry/turbo.json @@ -3,7 +3,15 @@ "extends": ["//"], "tasks": { "test": { - "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] + "command": [ + "node", + "--import", + "tsx", + "--test", + "src/client.test.ts", + "src/config.test.ts", + "src/utils.test.ts" + ] }, "lint:prettier": { "command": [ diff --git a/packages/turbo-vsc/turbo.json b/packages/turbo-vsc/turbo.json index b5919879247e4..d8c5dc509f712 100644 --- a/packages/turbo-vsc/turbo.json +++ b/packages/turbo-vsc/turbo.json @@ -3,7 +3,15 @@ "extends": ["//"], "tasks": { "test": { - "command": ["node", "--import", "tsx", "--test", "src/*.test.ts"] + "command": [ + "node", + "--import", + "tsx", + "--test", + "src/package-json.test.ts", + "src/turbo-daemon-command.test.ts", + "src/turbo-run-terminal-options.test.ts" + ] }, "esbuild": { "outputs": ["out/main.js", "out/main.js.map"], From 3d2e2f20f8406d9a0d2a306f3653b9876db58112 Mon Sep 17 00:00:00 2001 From: Anthony Shew Date: Tue, 28 Jul 2026 17:24:20 -0700 Subject: [PATCH 4/4] fix: Prevent codemod test worker hang --- packages/turbo-codemod/turbo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/turbo-codemod/turbo.json b/packages/turbo-codemod/turbo.json index 39b05d3da25db..90055abf2c11c 100644 --- a/packages/turbo-codemod/turbo.json +++ b/packages/turbo-codemod/turbo.json @@ -6,7 +6,7 @@ "command": ["pnpm", "exec", "tsdown"] }, "test": { - "command": ["pnpm", "exec", "jest"] + "command": ["pnpm", "exec", "jest", "--runInBand", "--forceExit"] }, "lint:prettier": { "command": [