> For the complete documentation index, see [llms.txt](https://circleci.com/docs/llms.txt)

# Deploy to npm registry

In this how-to guide, you will learn how to configure CircleCI to publish to the npm registry.

## Introduction

Setting up CircleCI to publish packages to the npm registry enabling project collaborators to release new package versions in a consistent and predictable way.

## 1\. Get the npm `authToken`

Get the npm `authToken` for the account that you wish to use to publish the package. You can do this by logging in to npm (`npm login`). This will save the `authToken` to the `~/.npmrc` file. Look for the following line:

`````````
//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000
`````````

In this case, the `authToken` is `00000000-0000-0000-0000-000000000000`.

## 2\. Set npm token

Go to your [Project Settings](https://circleci.com/docs/guides/security/set-environment-variable/#set-an-environment-variable-in-a-project), and set the `NPM_TOKEN` variable to the obtained `authToken`.

## 3\. Configure CircleCI

Configure CircleCI to add the `authToken` to `~/.npmrc`, run `npm publish` and only for versioned tags:

`````````
version: 2.1

jobs:
  publish:
    docker:
      - image: <docker-image-name-tag>
    steps:
      - checkout
      - run:
          name: Publish to NPM
          command: |
            npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
            npm publish

workflows:
  tagged-build:
    jobs:
      - publish:
          filters:
            tags:
              only: /v[0-9]+(\.[0-9]+)*/
`````````

## 4\. Create a new version

When you want to publish a new version to npm, run `npm version` to create a new version:

`````````
npm version 10.0.1
`````````

This will update the `package.json` file and creates a tagged Git commit. Next, push the commit with tags:

`````````
git push --follow-tags
`````````

## 5\. Publish

If tests passed, CircleCI will publish the package to npm automatically.

## Track your deployments with deploy markers

Deploy markers provide a way to track and manage your npm package publications in the CircleCI web app. When you add deploy markers to your deployment job, you can view a timeline of all deployments, track their status, and enable rollback and deploy pipelines.

You have two options for setting up deploy markers:

*   **In-app setup**: Use the guided setup in the CircleCI web app when configuring a [Rollback Pipeline](https://circleci.com/docs/guides/deploy/set-up-rollbacks/) or [Deploy Pipeline](https://circleci.com/docs/guides/deploy/set-up-deploys/). The setup will walk you through adding deploy markers to your configuration. If you are using GitHub and have the CircleCI GitHub App installed, you can use AI to generate the deploy marker configuration automatically.
    
*   **Manual setup**: Add deploy marker commands directly to your `.circleci/config.yml` file by following the [Configure Deploy Markers](https://circleci.com/docs/guides/deploy/configure-deploy-markers/) guide.
    

Both approaches will enable you to track deployment history and manage rollbacks directly from the CircleCI web app.