Dependency Types
Dependency types refer to the different locations in package.json files where dependencies can be defined.
Default Values
The default dependency types in syncpack are the ones defined by npm, pnpm, and yarn:
| Name | Source | Property |
|---|---|---|
| dev | package.json | devDependencies |
| local | package.json | version |
| overrides | package.json | overrides |
| peer | package.json | peerDependencies |
| pnpmOverrides | pnpm-workspace.yaml | overrides |
| prod | package.json | dependencies |
| resolutions | package.json | resolutions |
Catalog Names
Catalog dependency types are added automatically when syncpack detects pnpm catalogs in pnpm-workspace.yaml or Bun catalogs in the root package.json.
| Name | Source | When |
|---|---|---|
pnpmCatalog | pnpm-workspace.yaml catalog | the pnpm default catalog has entries |
pnpmCatalog:<name> | pnpm-workspace.yaml catalogs.<name> | one per named pnpm catalog |
bunCatalog | root package.json catalog | the Bun default catalog is present |
bunCatalog:<name> | root package.json catalogs.<name> | one per named Bun catalog |
Bun also recognises workspaces.catalog and workspaces.catalogs.<name>. These names work everywhere a dependency type is accepted.
syncpack lint --dependency-types pnpmCatalogsyncpack list --dependency-types 'pnpmCatalog:react18'Custom Values
You can extend the above list by defining your own custom types, such as:
- Engine versions (
engines) - Package manager versions (
packageManager) - Any other nested property in package.json
- Properties in
pnpm-workspace.yaml(viasource: "PnpmWorkspace")
Using Dependency Types
Dependency types can be specified in these contexts:
Command Line Filtering
Use the --dependency-types option to target specific types in commands:
# Only check production dependenciessyncpack lint --dependency-types prod
# Check both production and development dependenciessyncpack lint --dependency-types prod,dev
# Check everything except peer dependenciessyncpack lint --dependency-types '!peer'Configuration
Dependency types can be used to target and filter:
- Version Groups - Carve out specific version policies
- Semver Groups - Define which semver ranges to use with specific dependencies
- Dependency Groups - Merge and alias families of dependencies as one