5.1 KiB
5.1 KiB
Dependency Audit Report
Last Updated: 2025-01-27 Purpose: Analysis of dependencies across all projects
Overview
This document provides an analysis of dependencies across all projects in the workspace, identifying common dependencies, version inconsistencies, and opportunities for consolidation.
Analysis Methodology
- Scan all
package.jsonfiles in the workspace - Extract production and development dependencies
- Count usage frequency
- Identify version inconsistencies
- Recommend consolidation opportunities
Note: Run scripts/deps-analyze.sh to generate an updated analysis report.
Common Dependencies
Most Frequently Used (Production)
Based on initial analysis, these dependencies appear frequently:
TypeScript/JavaScript Core
- typescript: Used across TypeScript projects
- zod: Schema validation (used in 10+ projects)
- dotenv: Environment configuration (used in 15+ projects)
- date-fns: Date handling (used in 5+ projects)
Framework & Runtime
- react: Frontend projects
- nextjs: Next.js applications
- express: Backend services
- fastify: Backend services
Blockchain/Solidity
- ethers / viem: Ethereum libraries
- @openzeppelin/contracts: Smart contract libraries
- foundry: Solidity development (dev dependency)
Database
- @prisma/client: Database ORM
- postgresql: Database client
Utilities
- winston: Logging
- jsonwebtoken: Authentication
- bcryptjs: Password hashing
- uuid: UUID generation
Most Frequently Used (Development)
Build & Tooling
- typescript: TypeScript compiler
- eslint: Linting
- prettier: Code formatting
- @typescript-eslint/*: TypeScript ESLint plugins
Testing
- vitest: Testing framework (newer projects)
- jest: Testing framework (older projects)
- @testing-library/react: React testing utilities
Build Tools
- vite: Build tool
- tsx: TypeScript execution
- tsc: TypeScript compiler
Version Consolidation Opportunities
TypeScript
- Current Versions: Multiple versions (5.3.3, 5.5.4, etc.)
- Recommendation: Standardize on latest stable (5.5.4+)
- Impact: High - affects all TypeScript projects
Zod
- Current Versions: Multiple versions (3.22.4, 3.23.8, etc.)
- Recommendation: Standardize on latest (3.23.8+)
- Impact: Medium - shared validation library
ESLint
- Current Versions: Multiple versions (8.56.0, 8.57.0, 9.17.0)
- Recommendation: Migrate to ESLint 9.x across all projects
- Impact: High - affects code quality tooling
Prettier
- Current Versions: Multiple versions (3.1.1, 3.2.0, 3.3.3)
- Recommendation: Standardize on latest (3.3.3+)
- Impact: Medium - code formatting
Shared Package Candidates
High Priority (Used in 5+ Projects)
-
@workspace/shared-types
- Common TypeScript types
- Used in: dbis_core, the_order, Sankofa, etc.
-
@workspace/shared-utils
- Common utilities (date formatting, validation, etc.)
- Used in: Multiple projects
-
@workspace/shared-config
- Shared configuration schemas
- Used in: All projects with configuration
-
@workspace/shared-constants
- Shared constants and enums
- Used in: DBIS projects, DeFi projects
Medium Priority (Used in 3-4 Projects)
-
@workspace/api-client
- Common API client utilities
- Used in: Frontend projects, API consumers
-
@workspace/validation
- Zod schemas and validators
- Used in: Multiple backend services
Dependency Security
Security Scanning
- Run
pnpm auditornpm auditin each project - Use Dependabot for automated updates
- Review and update vulnerable dependencies regularly
High-Risk Dependencies
- Review dependencies with known vulnerabilities
- Prioritize updates for security-critical packages
- Document security update process
Recommendations
Immediate Actions
-
Hoist Common DevDependencies
- typescript
- eslint
- prettier
- @typescript-eslint/*
- vitest/jest
-
Create Shared Packages
- Start with @workspace/shared-types
- Create @workspace/shared-utils
- Extract common validation schemas
-
Version Consolidation
- Standardize TypeScript version
- Standardize Zod version
- Standardize ESLint/Prettier versions
Long-Term Actions
-
Dependency Audit Process
- Quarterly dependency reviews
- Automated security scanning
- Version update workflow
-
Shared Package Strategy
- Extract shared code gradually
- Document shared package APIs
- Version shared packages independently
Tools for Analysis
Automated Tools
- npm-check-updates: Check for outdated packages
- depcheck: Find unused dependencies
- npm-audit: Security vulnerability scanning
- pnpm-why: Understand why dependencies are installed
Manual Review
- Review package.json files regularly
- Track dependency updates
- Document breaking changes
Next Steps: Run scripts/deps-analyze.sh to generate detailed analysis report.