diff --git a/packages/fs-detectors/src/monorepos/get-monorepo-default-settings.ts b/packages/fs-detectors/src/monorepos/get-monorepo-default-settings.ts index a085a722f..9bb14cc44 100644 --- a/packages/fs-detectors/src/monorepos/get-monorepo-default-settings.ts +++ b/packages/fs-detectors/src/monorepos/get-monorepo-default-settings.ts @@ -22,6 +22,18 @@ export class MissingBuildTarget extends Error { } } +function supportsRootCommand(turboSemVer: string | undefined) { + if (!turboSemVer) { + return false; + } + + if (!semver.validRange(turboSemVer)) { + return false; + } + + return !semver.intersects(turboSemVer, '<1.8.0'); +} + type MonorepoDefaultSettings = { buildCommand?: string | null; installCommand?: string | null; @@ -91,7 +103,7 @@ export async function getMonorepoDefaultSettings( let buildCommand = null; if (projectPath) { - if (turboSemVer && !semver.intersects(turboSemVer, '<1.8.0')) { + if (supportsRootCommand(turboSemVer)) { buildCommand = `turbo run build`; } else { // We don't know for sure if the local `turbo` supports inference. diff --git a/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/package.json b/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/package.json new file mode 100644 index 000000000..9ea60da72 --- /dev/null +++ b/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/package.json @@ -0,0 +1,9 @@ +{ + "private": true, + "workspaces": [ + "packages/*" + ], + "devDependencies": { + "turbo": "latest" + } +} diff --git a/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/packages/app-1/package.json b/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/packages/app-1/package.json new file mode 100644 index 000000000..a061718c1 --- /dev/null +++ b/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/packages/app-1/package.json @@ -0,0 +1,5 @@ +{ + "name": "app-14", + "version": "0.0.1", + "main": "index.js" +} diff --git a/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/turbo.json b/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/turbo.json new file mode 100644 index 000000000..9ba48caad --- /dev/null +++ b/packages/fs-detectors/test/fixtures/get-monorepo-default-settings/turbo-latest/turbo.json @@ -0,0 +1,2 @@ +// TEST COMMENT TO VERIFY JSON5 SUPPORT +{ "pipeline": { "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] } } } diff --git a/packages/fs-detectors/test/unit.get-monorepo-default-settings.test.ts b/packages/fs-detectors/test/unit.get-monorepo-default-settings.test.ts index ce3e95d7b..9319fab01 100644 --- a/packages/fs-detectors/test/unit.get-monorepo-default-settings.test.ts +++ b/packages/fs-detectors/test/unit.get-monorepo-default-settings.test.ts @@ -31,6 +31,7 @@ describe('getMonorepoDefaultSettings', () => { ['turbo-package-config', 'turbo', false, 'app-13', false, false], ['turbo-npm', 'turbo', true, 'app-15', false, false], ['turbo-npm-root-proj', 'turbo', true, 'app-root-proj', true, false], + ['turbo-latest', 'turbo', false, 'app-14', false, false], ['nx', 'nx', false, 'app-12', false, false], ['nx-package-config', 'nx', false, 'app-11', false, false], ['nx-project-and-package-config-1', 'nx', false, 'app-10', false, false],