diff --git a/packages/plugin-commands-installation/src/install.ts b/packages/plugin-commands-installation/src/install.ts index fa4d1e0dfb..3355f93d24 100644 --- a/packages/plugin-commands-installation/src/install.ts +++ b/packages/plugin-commands-installation/src/install.ts @@ -330,12 +330,13 @@ export async function handler ( input = input.filter(Boolean) const dir = opts.dir || process.cwd() + let allProjects = opts.allProjects + let workspacePackages = undefined - const workspacePackages = opts.workspaceDir - ? arrayOfWorkspacePackagesToMap( - await findWorkspacePackages(opts.workspaceDir, opts), - ) - : undefined + if (opts.workspaceDir) { + allProjects = allProjects ?? await findWorkspacePackages(opts.workspaceDir, opts) + workspacePackages = arrayOfWorkspacePackagesToMap(allProjects) + } const store = await createOrConnectStoreController(opts) const installOpts = { @@ -404,9 +405,7 @@ export async function handler ( } if (opts.linkWorkspacePackages && opts.workspaceDir) { - // TODO: reuse somehow the previous read of packages - // this is not optimal - const allProjects = await findWorkspacePackages(opts.workspaceDir, opts) + allProjects = allProjects ?? await findWorkspacePackages(opts.workspaceDir, opts) const selectedProjectsGraph = await filterPkgsBySelectorObjects(allProjects, [ { excludeSelf: true,