# Project map

> The commands in this section allow you to manage project assets that involve Uniform's project map features.

Source: https://docs.uniform.app/docs/guides/cli/commands/project-map

The commands in this section allow you to manage project assets
that involve Uniform's project map features. This includes:

| Project asset | Command | More information |
| --- | --- | --- |
| Project map commands | [project-map](#project-map-commands) | Capabilities |
| Node commands | [project-map node](#project-map-node-commands) | Capabilities |

## Project map commands

These commands should be added as a script command in your project, rather than run directly in the terminal. For example, in the package.json file of a next.js project:

```json
"scripts": {
    "uniform:fetch-map": "uniform project-map definition list"
  },
```

### Get project map

```bash
uniform project-map definition get <id>
```

_command_  
Fetch a project map definition from the Uniform project.

| Command | Output details |
| --- | --- |
| -f, --format  <br>_string (optional, default value: YAML)_ | Format for the output (YAML or JSON) |
| -o, --filename  <br>_string (optional)_ | File name for the output. If not specified the output is written to stdout. |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### List project maps

```bash
uniform project-map definition list
```

_command_  
List project-map definitions from the Uniform project.

| Command | Output details |
| --- | --- |
| --offset  <br>_integer (optional)_ | Number of rows to skip before fetching. |
| limit  <br>_integer (optional, default value: 20)_ | Number of rows to fetch. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Format for the output (YAML or JSON) |
| -o, --filename  <br>_string (optional)_ | File name for the output. If not specified the output is written to stdout. |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### Pull project map

```bash
uniform project-map definition pull <directory or file path>
```

_command_  
Fetch all project map definitions from the Uniform project and save them locally.

- If a directory path is specified, a separate file is created for each project map.
- If a file path is specified, all project map definitions are saved in a single file.

| Command | Output details |
| --- | --- |
| -w, --what-if  <br>_boolean (optional)_ | If true, reports what would be done but changes no files. |
| -m, --mode  <br>string (optional, default value: mirror) | Specifies what kind of changes can be made.  <br>`create` - Create new files but don't update existing files.  <br>`createOrUpdate` - Create new files and update existing files but delete no files.  <br>`mirror` - Create new files, update existing files, and delete files that don't match existing objects in the Uniform project. |
| -d, --diff  <br>string (optional, default value: off) | Specifies which changes are written to stdout. If not specified, the environment variable UNIFORM_CLI_DIFF_MODE is used. If the environment variable isn't set, the default value is used.  <br>`off` - No changes are written.  <br>`update` - Only update changes are written.  <br>`on` - Update, create, and delete changes are written. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Format for the output (YAML or JSON) |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

> **Tip:**
>
> If file name is specified, CLI will override only corresponding part of it (for example, pulling Project Map will only override project map section, but leave Canvas section in the same file intact). It allows you to create single file containing whole project export (Canvas + Context + Project Map). This isn't recommended for big projects. Learn about [backing up to a single file](https://docs.uniform.app/docs/guides/cli/common-tasks#backup-assets-to-a-single-file).

### Push project map

```bash
uniform project-map definition push <directory or file path>
```

_command_  
Insert or update all project map definitions from local disk to the Uniform project.

- If a directory path is specified, the project map defined in the files in the directory used.
- If a file path is specified, the project map in the file are used.

| Command | Output details |
| --- | --- |
| -w, --what-if  <br>_boolean (optional)_ | If true, reports what would be done but changes no files. |
| -m, --mode  <br>string (optional, default value: mirror) | Specifies what kind of changes can be made.  <br>`create` - Create new files but don't update existing files.  <br>`createOrUpdate` - Create new files and update existing files but delete no files.  <br>`mirror` - Create new files, update existing files, and delete files that don't match existing objects in the Uniform project. |
| -d, --diff  <br>string (optional, default value: off) | Specifies which changes are written to stdout. If not specified, the environment variable UNIFORM_CLI_DIFF_MODE is used. If the environment variable isn't set, the default value is used.  <br>`off` - No changes are written.  <br>`update` - Only update changes are written.  <br>`on` - Update, create, and delete changes are written. |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### Remove project map

```bash
uniform project-map definition remove <id>
```

_command_  
Delete a project map definition from the Uniform project.

| Command | Output details |
| --- | --- |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### Update project map

```bash
uniform project-map definition update <filename>
```

_command_  
Insert or update a project map definition from a local file to the Uniform project.

| Command | Output details |
| --- | --- |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

## Project map node commands

> **Requirement for supporting localized project map nodes:**
>
> To serialize and deserialize localized project map nodes, it's essential to use the Uniform CLI and `@uniformdev/project-map` package version `19.151.0` or later.
>
> If you're using localized project map nodes in your project with an older version of the Uniform CLI or `@uniformdev/project-map` package, these nodes may not be correctly serialized or deserialized. This can result in data loss or inaccurate data when pulling or pushing project map nodes.

### Get project map node

```bash
uniform project-map node get <id> <projectMapId>
```

_command_  
Fetch a project map node from the Uniform project. Both the node UUID (`id`) and the project map UUID (`projectMapId`) are required.

| Command | Output details |
| --- | --- |
| -f, --format  <br>_string (optional, default value: YAML)_ | Format for the output (YAML or JSON) |
| -o, --filename  <br>_string (optional)_ | File name for the output. If not specified the output is written to stdout. |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### List project map nodes

```bash
uniform project-map node list <projectMapId>
```

_command_  
List project map nodes from the Uniform project. The project map UUID (`projectMapId`) is required. You can use the `ls` alias for `list`.

| Command | Output details |
| --- | --- |
| --offset  <br>_integer (optional)_ | Number of rows to skip before fetching. |
| limit  <br>_integer (optional, default value: 20)_ | Number of rows to fetch. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Format for the output (YAML or JSON) |
| -o, --filename  <br>_string (optional)_ | File name for the output. If not specified the output is written to stdout. |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### Pull project map node

```bash
uniform project-map node pull <directory or file path>
```

_command_  
Fetch all project map node from the Uniform project and save them locally.

- If a directory path is specified, a separate file is created for each node.
- If a file path is specified, all project map nodes are saved in a single file.

| Command | Output details |
| --- | --- |
| -w, --what-if  <br>_boolean (optional)_ | If true, reports what would be done but changes no files. |
| -m, --mode  <br>string (optional, default value: mirror) | Specifies what kind of changes can be made.  <br>`create` - Create new files but don't update existing files.  <br>`createOrUpdate` - Create new files and update existing files but delete no files.  <br>`mirror` - Create new files, update existing files, and delete files that don't match existing objects in the Uniform project. |
| -d, --diff  <br>string (optional, default value: off) | Specifies which changes are written to stdout. If not specified, the environment variable UNIFORM_CLI_DIFF_MODE is used. If the environment variable isn't set, the default value is used.  <br>`off` - No changes are written.  <br>`update` - Only update changes are written.  <br>`on` - Update, create, and delete changes are written. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Format for the output (YAML or JSON) |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

> **Tip:**
>
> If file name is specified, CLI will override only corresponding part of it (for example, pulling Project Map will only override project map section, but leave Canvas section in the same file intact). It allows you to create single file containing whole project export (Canvas + Context + Project Map). This isn't recommended for big projects. Learn about [backing up to a single file](https://docs.uniform.app/docs/guides/cli/common-tasks#backup-assets-to-a-single-file).

### Push project map node

```bash
uniform project-map node push <directory or file path>
```

_command_  
Insert or update all project map nodes from local disk to the Uniform project.

- If a directory path is specified, the node defined in the files in the directory used.
- If a file path is specified, the project map nodes in the file are used.

| Command | Output details |
| --- | --- |
| -w, --what-if  <br>_boolean (optional)_ | If true, reports what would be done but changes no files. |
| -m, --mode  <br>string (optional, default value: mirror) | Specifies what kind of changes can be made.  <br>`create` - Create new files but don't update existing files.  <br>`createOrUpdate` - Create new files and update existing files but delete no files.  <br>`mirror` - Create new files, update existing files, and delete files that don't match existing objects in the Uniform project. |
| -d, --diff  <br>string (optional, default value: off) | Specifies which changes are written to stdout. If not specified, the environment variable UNIFORM_CLI_DIFF_MODE is used. If the environment variable isn't set, the default value is used.  <br>`off` - No changes are written.  <br>`update` - Only update changes are written.  <br>`on` - Update, create, and delete changes are written. |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### Remove project map node

```bash
uniform project-map node remove <id>
```

_command_  
Delete a project map node from the Uniform project.

| Command | Output details |
| --- | --- |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |

### Update project map node

```bash
uniform project-map node update <filename>
```

_command_  
Insert or update a project map node from a local file to the Uniform project.

| Command | Output details |
| --- | --- |
| -p, --project  <br>_string_ | Uniform project id. If not specified, the environment variable `UNIFORM_CLI_PROJECT_ID` is used. |
| -f, --format  <br>_string (optional, default value: YAML)_ | Uniform API key. If not specified, the environment variable `UNIFORM_API_KEY` is used. |
| --apiHost  <br>_string (optional, default value: https://uniform.app)_ | Uniform host. If not specified, the environment variable `UNIFORM_CLI_BASE_URL` is used. If the environment variable isn't set, the default value is used. |
| --proxy  <br>_string (optional)_ | Proxy server. If not specified, the following environment variables are used (with the first match being used): `HTTPS_PROXY`, `https_proxy`, `ALL_PROXY`, `all_proxy`. If no match is found, no proxy server is used. |
