diff --git a/packages/angular/cli/src/command-builder/architect-command-module.ts b/packages/angular/cli/src/command-builder/architect-command-module.ts index 9f508688a5ec..abd3d2c41fb4 100644 --- a/packages/angular/cli/src/command-builder/architect-command-module.ts +++ b/packages/angular/cli/src/command-builder/architect-command-module.ts @@ -94,16 +94,18 @@ export abstract class ArchitectCommandModule } private getArchitectProject(): string | undefined { - const workspace = this.context.workspace; - if (!workspace) { - return undefined; - } - - const [, projectName] = this.context.args.positional; + const { options, positional } = this.context.args; + const [, projectName] = positional; if (projectName) { - return workspace.projects.has(projectName) ? projectName : undefined; + return projectName; } + + // Yargs allows positional args to be used as flags. + if (typeof options['project'] === 'string') { + return options['project']; + } + const target = this.getArchitectTarget(); const projectFromTarget = this.getProjectNamesByTarget(target); diff --git a/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts b/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts index 938a00105c64..e75e869fcb75 100644 --- a/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts +++ b/tests/legacy-cli/e2e/tests/commands/project-cannot-be-determined-by-cwd.ts @@ -1,4 +1,5 @@ import { join } from 'path'; +import { expectFileNotToExist, expectFileToExist } from '../../utils/fs'; import { execAndWaitForOutputToMatch, ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; import { expectToFail } from '../../utils/utils'; @@ -27,6 +28,9 @@ export default async function () { // Help should still work execAndWaitForOutputToMatch('ng', ['build', '--help'], /--configuration/); + // Yargs allows positional args to be passed as flags. Verify that in this case the project can be determined. + await ng('build', '--project=third-app', '--configuration=development'); + process.chdir(join(startCwd, 'projects/second-app')); await ng('build', '--configuration=development'); } finally {