diff --git a/e2e/nx-run/src/run.test.ts b/e2e/nx-run/src/run.test.ts index 3e4ff908653c7..4f0413560f1ac 100644 --- a/e2e/nx-run/src/run.test.ts +++ b/e2e/nx-run/src/run.test.ts @@ -178,6 +178,13 @@ describe('Nx Running Tests', () => { runCLI(`build ${myapp}`); }, 10000); + it('should support project name positional arg non-consecutive to target', () => { + const myapp = uniq('app'); + runCLI(`generate @nrwl/web:app ${myapp}`); + + runCLI(`build --verbose ${myapp}`); + }, 10000); + it('should run targets from package json', () => { const myapp = uniq('app'); const target = uniq('script'); diff --git a/packages/nx/bin/init-local.ts b/packages/nx/bin/init-local.ts index 03ae306c5c4be..7fe5cde496323 100644 --- a/packages/nx/bin/init-local.ts +++ b/packages/nx/bin/init-local.ts @@ -82,15 +82,35 @@ export function rewriteTargetsAndProjects(args: string[]) { } function rewritePositionalArguments(args: string[]) { - if (!args[3] || args[3].startsWith('-')) { - return ['run', `${wrapIntoQuotesIfNeeded(args[2])}`, ...args.slice(3)]; - } else { + const relevantPositionalArgs = []; + const rest = []; + for (let i = 2; i < args.length; i++) { + if (!args[i].startsWith('-')) { + relevantPositionalArgs.push(args[i]); + if (relevantPositionalArgs.length === 2) { + rest.push(...args.slice(i + 1)); + break; + } + } else { + rest.push(args[i]); + } + } + + if (relevantPositionalArgs.length === 1) { return [ 'run', - `${args[3]}:${wrapIntoQuotesIfNeeded(args[2])}`, - ...args.slice(4), + `${wrapIntoQuotesIfNeeded(relevantPositionalArgs[0])}`, + ...rest, ]; } + + return [ + 'run', + `${relevantPositionalArgs[1]}:${wrapIntoQuotesIfNeeded( + relevantPositionalArgs[0] + )}`, + ...rest, + ]; } function wrapIntoQuotesIfNeeded(arg: string) {