Skip to main content
Version: 5.x

pnpm publish

Publishes a package to the registry.

pnpm [-r] publish [<tarball|folder>] [--tag <tag>]
[--access <public|restricted>]

When publishing a package inside a workspace, the LICENSE file from the root of the workspace is packed with the package (unless the package has a license of its own).

You may override some fields before publish, using the publishConfig field in package.json.

When running this command recursively (pnpm -r publish), pnpm will publish all the packages that have versions not yet published to the registry.


--tag <tag>

Publishes the package with the given tag. By default, pnpm publish updates the latest tag.

For example:

# inside the foo package directory
pnpm publish --tag next
# in a project where you want to use the next version of foo
pnpm add foo@next

--access <public|restricted>

Tells the registry whether the published package should be public or restricted.


Added in: v4.11.0

  • Default : true (since v5)
  • Type: Boolean

When true, pnpm publish checks if the current branch is your publish branch (master by default), clean, and up-to-date.


Added in: v4.11.0

  • Default: master
  • Types: String

The primary branch of the repository which is used for publishing the latest changes.


Added in: v5.18.0

Try to publish packages even if their current version is already found in the registry.

--filter <package_selector>

Added in: 4.6.0

Read more about filtering.