Skip to the content.

npm

Information

npm is the default package manager for the JavaScript runtime environment Node.js. It consists of a command line client, also called npm, and an online database of public and paid-for private packages, called the npm registry.

npm is bundled with Node.js and follows the Node.js release cadence. When you install a Node.js LTS version, the bundled npm version is also a stable, LTS-tested release. Using a Node.js LTS version is the recommended approach for production projects — it ensures both the runtime and npm receive long-term security patches. See node.md for details on LTS vs non-LTS Node.js versioning.

Installation

Windows & Linux

npm comes bundled with Node.js. To install it, download and install Node.js from the official website.

To check the installed version:

node -v
npm -v

Upgrade

To upgrade npm to the latest version globally:

npm install -g npm

Configuration

npm configuration can be managed via the .npmrc file (per-project, per-user, or global).

Common configuration commands:

# Set registry
npm config set registry https://registry.npmjs.org/

# List configuration
npm config list

Multi-module and Monorepo Workspaces

In the SMI ecosystem, we often use a single monorepo with multiple modules (workspaces). This allows managing dependencies for all sub-projects from the root.

Defining Workspaces

Workspaces are defined in the root package.json:

{
    "name": "my-monorepo",
    "workspaces": [
        "packages/*",
        "apps/*"
    ]
}

Installing Dependencies

When working with workspaces, you should generally run installation commands from the root folder.

Install all dependencies for all workspaces:

npm install

# Install an external dependency to a specific workspace
npm install <package-name> -w <workspace-name>

#Install an internal module as a dependency to another workspace
npm install <internal-package-name> -w <workspace-name>

npm outdated
npm outdated -r

npm update -w <workspace-name>
# Or
npx npm-check-updates -u

npx npm-check-updates --workspaces

npx npm-check-updates --workspaces -u
npm install

Usage, Tips and Tricks

package.json vs package-lock.json

npm install vs npm ci

# Use in Jenkins pipelines or local clean builds
npm ci

Running Scripts

To run a script defined in a specific workspace from the root:

npm run <script-name> -w <workspace-name>

To run a script across all workspaces:

npm run <script-name> --workspaces

Testing

Run tests in a workspace:

npm test -w <workspace-name>

Run tests in all workspaces:

npm test --workspaces

See also