@procore/syncpack-config
Version:
Procore Syncpack Config
76 lines (72 loc) • 1.55 kB
JavaScript
// @ts-check
/** @type {import("syncpack").RcFile['customTypes']} */
const customTypes = {
nodeEngine: {
path: 'engines.node',
strategy: 'version',
},
packageManager: {
path: 'packageManager',
strategy: 'name@version',
},
};
/** @type {import("syncpack").RcFile} */
const config = {
dependencyTypes: ['dev', 'peer', 'prod', ...Object.keys(customTypes)],
customTypes,
sortFirst: [
'name',
'version',
'description',
'author',
'homepage',
'repository',
'bugs',
'license',
'keywords',
'workspaces',
'private',
'publishConfig',
'type',
'exports',
'main',
'module',
'types',
'bin',
'files',
'engines',
'scripts',
'peerDependencies',
'peerDependenciesMeta',
'dependencies',
'devDependencies',
],
semverGroups: [
{
label: 'Require an exact version to meet packageManager field spec',
range: '',
dependencyTypes: ['packageManager'],
},
{
label: 'Require a caret on all non-peer dependencies',
range: '^',
dependencyTypes: ['!peer'],
dependencies: ['**'],
packages: ['**'],
},
],
versionGroups: [
{
label: 'Prefer lowest semver version',
dependencyTypes: ['peer'],
preferVersion: 'lowestSemver',
},
{
label: 'Internal packages should use workspace protocol',
dependencies: ['$LOCAL'], // all local packages,
dependencyTypes: ['!peer'],
pinVersion: 'workspace:^',
},
],
};
module.exports = config;