Back to skills
extension
Category: Development & EngineeringNo API key required

npm-workspaces

Use when managing npm workspaces monorepos - package dependencies, build ordering, cross-package development, and publishing workflows

personAuthor: jakexiaohubgithub

npm Workspaces

Quick Start

// Root package.json
{
  "name": "my-monorepo",
  "private": true,
  "workspaces": ["packages/*"],
  "scripts": {
    "build": "npm run build --workspaces",
    "test": "npm run test --workspaces"
  }
}

Core Commands

| Command | Purpose | |---------|---------| | npm install | Install all workspace deps | | npm run build --workspaces | Run in all workspaces | | npm run build -w pkg-name | Run in specific workspace | | npm run build --if-present | Skip if script missing |

Cross-Package Dependencies

// packages/compiler/package.json
{
  "name": "my-compiler",
  "dependencies": {
    "my-parser": "^1.0.0"  // Reference sibling package
  }
}
  • Use semver (not file:) for publishable packages
  • npm symlinks local packages automatically
  • Build order matters: dependencies before dependents

Build Ordering

// Root package.json - explicit order
{
  "scripts": {
    "build": "npm run build -w my-parser && npm run build -w my-compiler && npm run build -w my-cli"
  }
}

Or use a tool like wireit or turbo for dependency-aware builds.

Publishing

# Update versions (from root)
npm version patch -w my-parser
npm version patch -w my-compiler

# Publish all
npm publish --workspaces

# Publish specific
npm publish -w my-parser

Tips

  • Use "private": true in root to prevent accidental publish
  • Run npm ls to verify dependency resolution
  • Use npm explain <pkg> to debug why a package is installed
  • Add engines field to enforce Node version
  • Use --include-workspace-root to also run in root