syncpack-configuration

Syncpack Configuration

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "syncpack-configuration" with this command: npx skills add thebushidocollective/han/thebushidocollective-han-syncpack-configuration

Syncpack Configuration

Syncpack is a tool for managing consistent dependency versions across JavaScript/TypeScript monorepos. This skill covers configuration best practices.

Configuration File Locations

Syncpack searches for configuration in these locations (in order):

  • syncpack.config.js / .cjs / .mjs / .ts

  • syncpack.config.json / .yaml / .yml

  • .syncpackrc / .syncpackrc.json / .syncpackrc.yaml / .syncpackrc.yml

Basic Configuration

// syncpack.config.js export default { // Glob patterns to find package.json files source: [ 'package.json', 'packages//package.json', 'apps//package.json', ], };

Workspace Detection

Syncpack automatically detects workspaces:

  • npm/Yarn: Reads workspaces from ./package.json

  • pnpm: Reads packages from ./pnpm-workspace.yaml

  • Lerna: Reads packages from ./lerna.json

Override with explicit source patterns when needed.

Dependency Types

Control which dependency types to check:

export default { dependencyTypes: [ 'dev', // devDependencies 'local', // workspace: protocol dependencies 'overrides', // npm overrides / yarn resolutions 'peer', // peerDependencies 'pnpmOverrides', // pnpm overrides 'prod', // dependencies 'resolutions', // yarn resolutions ], };

Semver Groups

Define rules for semver range consistency:

export default { semverGroups: [ { // Require exact versions for React dependencies: ['react', 'react-dom'], range: '', // exact version }, { // Allow caret ranges for dev tools dependencyTypes: ['dev'], range: '^', }, ], };

Range Options

Range Example Meaning

''

1.2.3

Exact version

^

^1.2.3

Compatible with

~

~1.2.3

Approximately equivalent

=

=1.2.3

Greater than or equal

Any version

Version Groups

Partition dependencies into groups with separate version policies:

export default { versionGroups: [ { // Pin specific dependencies dependencies: ['typescript'], pinVersion: '5.3.3', }, { // Ban certain packages dependencies: ['moment'], isBanned: true, }, { // Use workspace version as source of truth dependencies: ['@myorg/*'], preferVersion: 'highestSemver', }, ], };

Formatting Options

Control package.json formatting:

export default { formatBugs: true, formatRepository: true, sortAz: [ 'contributors', 'dependencies', 'devDependencies', 'keywords', ], sortFirst: [ 'name', 'version', 'description', 'main', ], };

Common Patterns

Single Version Policy

Enforce one version per dependency across all packages:

export default { versionGroups: [ { label: 'Use highest version everywhere', preferVersion: 'highestSemver', }, ], };

Allow Development Exceptions

export default { versionGroups: [ { label: 'Ignore dev dependencies', dependencyTypes: ['dev'], isIgnored: true, }, { label: 'Consistent versions for production', dependencyTypes: ['prod', 'peer'], preferVersion: 'highestSemver', }, ], };

Scoped Package Source of Truth

export default { versionGroups: [ { label: 'Internal packages use local version', dependencies: ['@myorg/**'], dependencyTypes: ['local'], preferVersion: 'local', }, ], };

Best Practices

  • Start with defaults - Syncpack works well without configuration

  • Add rules incrementally - Only add rules as you encounter issues

  • Document exceptions - Use label field to explain why rules exist

  • Commit config file - Keep version policy in version control

  • Run in CI - Use syncpack list-mismatches --fail-fast in CI pipelines

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

android-jetpack-compose

No summary provided by upstream source.

Repository SourceNeeds Review
General

fastapi-async-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
General

storybook-story-writing

No summary provided by upstream source.

Repository SourceNeeds Review