Skip to content

Commit

Permalink
fix(core): prevent graph output from being truncated (#23446)
Browse files Browse the repository at this point in the history
<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

## Current Behavior
--graph stdout and --file stdout aren't documented. When printing graph
to stdout, its possible for some output to get missed.

## Expected Behavior
Existing flags are documented, and `--print` is more discoverable. We
await stdout finishing before exiting the program.

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #18689
  • Loading branch information
AgentEnder authored May 31, 2024
1 parent 1e7cd7e commit a308e1d
Show file tree
Hide file tree
Showing 20 changed files with 532 additions and 157 deletions.
22 changes: 20 additions & 2 deletions docs/generated/cli/affected.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,30 @@ Run build for only projects with the tag `dotnet`:
nx affected -t=build --exclude='*,!tag:dotnet'
```

Use the currently executing project name in your command.:
Use the currently executing project name in your command:

```shell
nx affected -t build --tag=$NX_TASK_TARGET_PROJECT:latest
```

Preview the task graph that Nx would run inside a webview:

```shell
nx affected -t=build --graph
```

Save the task graph to a file:

```shell
nx affected -t=build --graph=output.json
```

Print the task graph to the console:

```shell
nx affected -t=build --graph=stdout
```

## Options

### ~~all~~
Expand Down Expand Up @@ -109,7 +127,7 @@ Change the way Nx is calculating the affected command by providing directly chan

Type: `string`

Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser.
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.

### head

Expand Down
14 changes: 13 additions & 1 deletion docs/generated/cli/graph.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ Generate a static website with project graph into an html file, accompanied by a
nx graph --file=output.html
```

Print the project graph as JSON to the console:

```shell
nx graph --print
```

Show the graph where every node is either an ancestor or a descendant of todos-feature-main:

```shell
Expand Down Expand Up @@ -89,7 +95,7 @@ Exclude certain projects from being processed

Type: `string`

Output file (e.g. --file=output.json or --file=dep-graph.html)
Output file (e.g. --file=output.json or --file=dep-graph.html).

### files

Expand Down Expand Up @@ -141,6 +147,12 @@ Type: `number`

Bind the project graph server to a specific port.

### print

Type: `boolean`

Print the project graph to stdout in the terminal.

### targets

Type: `string`
Expand Down
2 changes: 1 addition & 1 deletion docs/generated/cli/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ Exclude certain projects from being processed

Type: `string`

Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser.
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.

##### help

Expand Down
20 changes: 19 additions & 1 deletion docs/generated/cli/run-many.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,24 @@ Run lint, test, and build targets for all projects. Requires Nx v15.4+:
nx run-many --targets=lint,test,build
```

Preview the task graph that Nx would run inside a webview:

```shell
nx run-many -t=build --graph
```

Save the task graph to a file:

```shell
nx run-many -t=build --graph=output.json
```

Print the task graph to the console:

```shell
nx run-many -t=build --graph=stdout
```

## Options

### all
Expand Down Expand Up @@ -105,7 +123,7 @@ Exclude certain projects from being processed

Type: `string`

Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser.
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.

### help

Expand Down
143 changes: 131 additions & 12 deletions docs/generated/cli/run.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,163 @@
---
title: 'run - CLI command'
description: 'Runs a target defined for your project. Target definitions can be found in the `scripts` property of the project `package.json`, or in the `targets` property of the project `project.json` file.'
description: 'Run a target for a project
(e.g., nx run myapp:serve:production).
You can also use the infix notation to run a target:
(e.g., nx serve myapp --configuration=production)
You can skip the use of Nx cache by using the --skip-nx-cache option.'
---

# run

Runs a target defined for your project. Target definitions can be found in the `scripts` property of the project `package.json`, or in the `targets` property of the project `project.json` file.
Run a target for a project
(e.g., nx run myapp:serve:production).

You can also use the infix notation to run a target:
(e.g., nx serve myapp --configuration=production)

You can skip the use of Nx cache by using the --skip-nx-cache option.

## Usage

```shell
nx run <target> [options]
nx run [project][:target][:configuration] [_..]
```

Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpx nx`.
Install `nx` globally to invoke the command directly using `nx`, or use `npx nx`, `yarn nx`, or `pnpm nx`.

### Examples

Run the `build` target for the `myapp` :
Run the target build for the myapp project:

```shell
nx run myapp:build
```

Run the target build for the myapp project, with production configuration:

```shell
nx run myapp:build:production
```

Preview the task graph that Nx would run inside a webview:

```shell
nx run myapp:build --graph
```

Save the task graph to a file:

```shell
nx run myapp:build --graph=output.json
```

Print the task graph to the console:

```shell
nx run myapp:build
nx run myapp:build --graph=stdout
```

Run the `build` target for the `myapp` project with a `production` configuration:
Run's a target named build:test for the myapp project. Note the quotes around the target name to prevent "test" from being considered a configuration:

```shell
nx run myapp:build:production
nx run myapp:"build:test"
```

## Options

### configuration (-c)
### batch

Type: `boolean`

Default: `false`

Run task(s) in batches for executors which support batches

### configuration

Type: `string`

This is the configuration to use when performing tasks on projects

### exclude

Type: `string`

Exclude certain projects from being processed

### graph

A named builder configuration, defined in the "configurations" section of the workspace configuration file. The builder uses the named configuration to run the given target.
Type: `string`

### help
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.

Show help
### nxBail

Type: `boolean`

Default: `false`

Stop command execution after the first failed task

### nxIgnoreCycles

Type: `boolean`

Default: `false`

Ignore cycles in the task graph

### output-style

Type: `string`

Choices: [dynamic, static, stream, stream-without-prefixes, compact]

Defines how Nx emits outputs tasks logs

| option | description |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dynamic | use dynamic output life cycle, previous content is overwritten or modified as new outputs are added, display minimal logs by default, always show errors. This output format is recommended on your local development environments. |
| static | uses static output life cycle, no previous content is rewritten or modified as new outputs are added. This output format is recommened for CI environments. |
| stream | nx by default logs output to an internal output stream, enable this option to stream logs to stdout / stderr |
| stream-without-prefixes | nx prefixes the project name the target is running on, use this option remove the project name prefix from output |

### parallel

Type: `string`

Max number of parallel processes [default is 3]

### project

Type: `string`

Target project

### runner

Type: `string`

This is the name of the tasks runner configured in nx.json

### skipNxCache

Type: `boolean`

Default: `false`

Rerun the tasks even when the results are available in the cache

### verbose

Type: `boolean`

Prints additional information about the commands (e.g., stack traces)

### version

Type: `boolean`

Show version number
8 changes: 4 additions & 4 deletions docs/generated/cli/show.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Show all projects in the workspace:
nx show projects
```

Show all projects with names starting with "api-". The "projects" option is useful to see which projects would be selected by run-many.:
Show all projects with names starting with "api-". The "projects" option is useful to see which projects would be selected by run-many:

```shell
nx show projects --projects api-*
Expand Down Expand Up @@ -53,19 +53,19 @@ Show affected projects in the workspace, excluding end-to-end projects:
nx show projects --affected --exclude=*-e2e
```

If in an interactive terminal, opens the project detail view. If not in an interactive terminal, defaults to JSON.:
If in an interactive terminal, opens the project detail view. If not in an interactive terminal, defaults to JSON:

```shell
nx show project my-app
```

Show detailed information about "my-app" in a json format.:
Show detailed information about "my-app" in a json format:

```shell
nx show project my-app --json
```

Show information about "my-app" in a human readable format.:
Show information about "my-app" in a human readable format:

```shell
nx show project my-app --json false
Expand Down
22 changes: 20 additions & 2 deletions docs/generated/packages/nx/documents/affected.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,30 @@ Run build for only projects with the tag `dotnet`:
nx affected -t=build --exclude='*,!tag:dotnet'
```

Use the currently executing project name in your command.:
Use the currently executing project name in your command:

```shell
nx affected -t build --tag=$NX_TASK_TARGET_PROJECT:latest
```

Preview the task graph that Nx would run inside a webview:

```shell
nx affected -t=build --graph
```

Save the task graph to a file:

```shell
nx affected -t=build --graph=output.json
```

Print the task graph to the console:

```shell
nx affected -t=build --graph=stdout
```

## Options

### ~~all~~
Expand Down Expand Up @@ -109,7 +127,7 @@ Change the way Nx is calculating the affected command by providing directly chan

Type: `string`

Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser.
Show the task graph of the command. Pass a file path to save the graph data instead of viewing it in the browser. Pass "stdout" to print the results to the terminal.

### head

Expand Down
Loading

0 comments on commit a308e1d

Please sign in to comment.