diff --git a/packages/cli/src/commands/create-plugin/createPlugin.ts b/packages/cli/src/commands/create-plugin/createPlugin.ts index a12060bbd2..7fcb0aef1a 100644 --- a/packages/cli/src/commands/create-plugin/createPlugin.ts +++ b/packages/cli/src/commands/create-plugin/createPlugin.ts @@ -301,6 +301,7 @@ export default async (opts: OptionValues) => { npmRegistry, }, createPackageVersionProvider(lockfile), + isMonoRepo, ); Task.section('Moving to final location'); diff --git a/packages/cli/src/commands/new/new.ts b/packages/cli/src/commands/new/new.ts index b0d30c0415..a5f8f6763f 100644 --- a/packages/cli/src/commands/new/new.ts +++ b/packages/cli/src/commands/new/new.ts @@ -22,6 +22,7 @@ import { FactoryRegistry } from '../../lib/new/FactoryRegistry'; import { paths } from '../../lib/paths'; import { assertError } from '@backstage/errors'; import { Task } from '../../lib/tasks'; +import { isMonoRepo } from '../../lib/monorepo/isMonoRepo'; function parseOptions(optionStrings: string[]): Record { const options: Record = {}; @@ -49,21 +50,6 @@ export default async (opts: OptionValues) => { providedOptions, ); - let isMonoRepo = false; - try { - const rootPackageJson = await fs.readJson( - paths.resolveTargetRoot('package.json'), - ); - if (rootPackageJson.workspaces) { - isMonoRepo = true; - } - } catch (error) { - assertError(error); - if (error.code !== 'ENOENT') { - throw error; - } - } - let defaultVersion = '0.1.0'; try { const rootLernaJson = await fs.readJson( @@ -89,7 +75,7 @@ export default async (opts: OptionValues) => { let modified = false; try { await factory.create(options, { - isMonoRepo, + isMonoRepo: await isMonoRepo(), defaultVersion, scope: opts.scope?.replace(/^@/, ''), npmRegistry: opts.npmRegistry, diff --git a/packages/cli/src/lib/new/factories/common/tasks.ts b/packages/cli/src/lib/new/factories/common/tasks.ts index 93af1e2b00..99ffabfb24 100644 --- a/packages/cli/src/lib/new/factories/common/tasks.ts +++ b/packages/cli/src/lib/new/factories/common/tasks.ts @@ -62,6 +62,7 @@ export async function executePluginPackageTemplate( tempDir, options.values, createPackageVersionProvider(lockfile), + ctx.isMonoRepo, ); // Format package.json if it exists diff --git a/packages/cli/src/lib/tasks.test.ts b/packages/cli/src/lib/tasks.test.ts index 4d9af05c4b..fb1f38536f 100644 --- a/packages/cli/src/lib/tasks.test.ts +++ b/packages/cli/src/lib/tasks.test.ts @@ -53,6 +53,7 @@ describe('templatingTask', () => { pluginVersion: '0.0.0', }, () => '^0.1.2', + true, ); await expect( diff --git a/packages/cli/src/lib/tasks.ts b/packages/cli/src/lib/tasks.ts index c84eed435e..851f962c62 100644 --- a/packages/cli/src/lib/tasks.ts +++ b/packages/cli/src/lib/tasks.ts @@ -22,7 +22,6 @@ import { promisify } from 'util'; import { basename, dirname } from 'path'; import recursive from 'recursive-readdir'; import { exec as execCb } from 'child_process'; -import { paths } from './paths'; import { assertError } from '@backstage/errors'; const exec = promisify(execCb); @@ -102,11 +101,11 @@ export async function templatingTask( destinationDir: string, context: any, versionProvider: (name: string, versionHint?: string) => string, + isMonoRepo: boolean, ) { const files = await recursive(templateDir).catch(error => { throw new Error(`Failed to read template directory: ${error.message}`); }); - const isMonoRepo = await fs.pathExists(paths.resolveTargetRoot('lerna.json')); for (const file of files) { const destinationFile = file.replace(templateDir, destinationDir);