Dependency classification standards

Properly classify dependencies in package.json according to their usage pattern and project guidelines. This ensures correct build behavior, optimizes package size, and prevents dependency conflicts.

copy reviewer prompt

Prompt

Reviewer Prompt

Properly classify dependencies in package.json according to their usage pattern and project guidelines. This ensures correct build behavior, optimizes package size, and prevents dependency conflicts.

  • Direct dependencies: Include only packages required at runtime
  • Peer dependencies: Use for optional integrations (also add as dev dependencies for testing)
  • Dev dependencies: Use for packages only needed during development/testing
  • Avoid unnecessary dependencies: Don’t add packages for functionality available natively

Example of correct dependency classification:

// package.json
{
  "dependencies": {
    // Only runtime requirements
  },
  "peerDependencies": {
    "@libsql/client": "^0.14.0" // Optional integration
  },
  "devDependencies": {
    "@libsql/client": "^0.14.0", // Also needed for testing
    "@cloudflare/workers-types": "^4.20240502.0" // Types only
  }
}

For third-party integrations, follow the project’s integration guidelines to determine the appropriate dependency type. Avoid adding dependencies when equivalent functionality exists natively.

Source discussions