---
title: "The CLI publish command"
slug: "the-cli-publish-command"
abstract: "Reference of the DevEx CLI publish command that publishes Sitecore Items."
---
# The CLI publish command

The [Sitecore publishing plugin](https://doc.sitecore.com/xp/en/developers/100/developer-tools/publishing-plugin.html "Publishing plugin") includes a `publish` command. This command publishes Sitecore Items. 

The CLI supports all Sitecore publishing mechanisms. When you run the publish command, the CLI automatically uses the appropriate publishing method for the target environment:

- Experience Edge publishing when Experience Edge is configured as the publishing target.

- Publishing Service when Publishing Service is installed.

- Default publishing when neither Experience Edge nor Publishing Service is available.


To install the publishing plugin, run the following code:

```text
dotnet sitecore plugin add -n Sitecore.DevEx.Extensibility.Publishing

```

<details>
<summary><h2>Usage</h2></summary>

You can use the command as follows:

```text
dotnet sitecore publish [options]

```

> [!tip]
> Some Sitecore CLI command examples wrap items names and other strings containing spaces in single quotes for correct interpretation by PowerShell. If you use a different command-line shell, you might have to change single quotes to double quotes.

</details>

<details>
<summary><h2>Options</h2></summary>

You can use the following options with the `publish` command:

| Option | Required? | Description |
| --- | --- | --- |
| `-n, --environment-name <environment-name>` | Optional | The Sitecore environment to use. Default: `default`. |
| `-c, --config <CONFIG>` | Optional | Path to root `sitecore.config` directory (default: cwd). |
| `-l, --languages <languages>` | Optional | Comma-separated list of languages to publish. If unspecified, then all languages are published. |
| `-p, --path <path>` | Optional | Sitecore item path or GUID to smart publish. If unspecified, then the full database is published. |
| `-r, --republish` | Optional | Use republish. If unspecified, then smart-publish is used instead. |
| `-v, --verbose` | Optional | Report additional diagnostic and performance data. |
| `-t, --trace` | Optional | Report additional diagnostic and performance data. |
| `-?, -h, --help` | Optional | Help for the command. |

</details>

<details>
<summary><h2>Examples</h2></summary>

The following are examples of the `publish` command use:

| Command | Result |
| --- | --- |
| Attempt to publish from the `samples` folder:<br><br>`dotnet sitecore publish` | Does not publish Sitecore items and returns the message `error: Couldn't resolve a root configuration file (sitecore.json) in the current or any parent directory. Looks like the command may have been executed outside a Sitecore project?` |
| Attempt to publish from the `samples` folder:<br><br>`dotnet sitecore publish -c Prototype/` | Publishes the Sitecore items from the folder `samples`. |
| `dotnet sitecore publish -n testEnv` | Publishes Sitecore items to the environment with the name `testEnv`. |
| `dotnet sitecore publish -l en-US,en-CA` | Publishes Sitecore items for only the specified languages (`en-US`,`en-CA`). |
| `dotnet sitecore publish -p /sitecore/content/Home/Test Item` | Publishes only the item with path */sitecore/content/Home/Test Item*. |
| `dotnet sitecore publish -v` | Creates additional diagnostic and performance data, such as root config path or count of nodes with performance, for example, 73ms (8.1ms/node). |
| `dotnet sitecore publish -t` | Creates additional diagnostic and performance data, such as FSIndex: Loaded filesystem indexes in, for example, 70ms (9 metadatas) or created package of 1 trees in, for example, 1983ms (9 items; 220.3ms/node). |

</details>