- 15 devDependencies
- TypeScript: ^5.3.3
driver-sdk:
- 5 devDependencies: @types/jest, @types/node, jest, ts-jest, typescript (^5.7.2)
- 1 dependency: @ya-modbus/driver-types
driver-types:
- 1 devDependency: typescript (^5.7.2)
ya-modbus-driver-xymd1:
- 5 devDependencies: @types/jest, @types/node, jest, ts-jest, typescript (^5.7.2)
- 1 dependency: @ya-modbus/driver-types
- 1 peerDependency: @ya-modbus/driver-types (duplicates dependency)
- Duplicate devDependencies: Testing-related packages (@types/jest, @types/node, jest, ts-jest) are duplicated in root and workspace packages
- Inconsistent TypeScript versions: Root uses ^5.3.3 while workspaces use ^5.7.2
- Redundant peerDependency: ya-modbus-driver-xymd1 has @ya-modbus/driver-types in both dependencies and peerDependencies
- Unnecessary hoisting prevention: npm workspaces automatically hoist common devDependencies to root
With npm workspaces, devDependencies defined in the root are available to all workspace packages. We can remove duplicates from workspace packages:
Remove from workspace packages:
- @types/jest
- @types/node
- jest
- ts-jest
Keep in workspace packages only if version differs from root or if needed for specific functionality
Update root to use TypeScript ^5.7.2 (latest used in workspaces). Remove TypeScript from workspace packages except driver-types (which only has TypeScript as dependency).
Remove @ya-modbus/driver-types from peerDependencies in ya-modbus-driver-xymd1 since it's already in dependencies.
ts-node is only in root devDependencies. Verify if it's needed for build/test scripts.
- Keep all current devDependencies
- Update TypeScript to ^5.7.2
- Total: 15 devDependencies (no change in count, but standardized versions)
- Remove: @types/jest, @types/node, jest, ts-jest, typescript
- Keep: @ya-modbus/driver-types (dependency)
- New total: 0 devDependencies, 1 dependency
- Remove: typescript
- New total: 0 devDependencies
- Remove: @types/jest, @types/node, jest, ts-jest, typescript
- Remove: @ya-modbus/driver-types from peerDependencies
- Keep: @ya-modbus/driver-types (dependency)
- New total: 0 devDependencies, 1 dependency
- Reduced total package count: From ~26 to ~16 unique packages
- Single source of truth: Version management in one place (root)
- Consistent versions: All packages use same testing/tooling versions
- Faster installs: Less duplication in node_modules
- Easier updates: Update versions once in root instead of multiple files
- Smaller lockfile: Fewer duplicate entries
After optimization:
- Run
npm installto regenerate lockfile - Verify all tests still pass
- Check that TypeScript compilation works for all packages
- Ensure no breaking changes from TypeScript version update