Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 34 additions & 71 deletions renovate.json5
Original file line number Diff line number Diff line change
@@ -1,79 +1,49 @@
{
// Validate against Renovate JSON schema
$schema: 'https://docs.renovatebot.com/renovate-schema.json',

// Base configuration presets
extends: [
'config:best-practices', // Use Renovate's recommended best practices
'mergeConfidence:all-badges', // Enable merge confidence badges
':maintainLockFilesMonthly', // Update lock files monthly
':timezone(America/Indiana/Indianapolis)', // Set timezone
':enableVulnerabilityAlerts', // Enable security vulnerability alerts
':automergeMinor', // Auto-merge minor updates
'group:react', // Group React packages together
'group:reactMonorepo', // Group React monorepo packages
'group:eslintMonorepo', // Group ESLint monorepo packages
'group:linters', // Group linting tools
'group:jestMonorepo', // Group Jest monorepo packages
'group:jestPlusTypes', // Group Jest with its types
'group:jestPlusTSJest', // Group Jest with TypeScript Jest
'config:best-practices',
'mergeConfidence:all-badges',
':maintainLockFilesMonthly',
':timezone(America/Indiana/Indianapolis)',
':enableVulnerabilityAlerts',
':automergeMinor',
'group:react',
'group:reactMonorepo',
'group:eslintMonorepo',
'group:linters',
'group:jestMonorepo',
'group:jestPlusTypes',
'group:jestPlusTSJest',
],

// Version management strategies
rangeStrategy: 'bump', // Bump ranges to next version
bumpVersion: 'patch', // Use patch version for bumping

// Enable dependency dashboard for overview
rangeStrategy: 'bump',
bumpVersion: 'patch',
dependencyDashboard: true,

// Rate limiting to avoid overwhelming CI
prConcurrentLimit: 10, // Max 10 concurrent PRs
prHourlyLimit: 0, // No hourly limit

// Rebase strategy
prConcurrentLimit: 10,
prHourlyLimit: 0,
rebaseWhen: 'auto',

// Schedule for when to run updates
schedule: [
'after 8am and before 5pm on monday',
],

// Schedule for when to automerge
automergeSchedule: [
'after 8am and before 5pm on monday',
],

// Allow updates outside of schedule
updateNotScheduled: false,

// Give everything some time to bake
minimumReleaseAge: '3 days',

// Automerge via PR (not branch)
automergeType: 'pr',

// Security update configuration
vulnerabilityAlerts: {
automerge: true, // Auto-merge security fixes
automerge: true,
labels: [
'security',
],
vulnerabilityFixStrategy: 'lowest', // Use lowest possible version that fixes vulnerability
prCreation: 'immediate', // Create PRs immediately for security issues
vulnerabilityFixStrategy: 'lowest',
prCreation: 'immediate',
},

// Enable OSV vulnerability alerts
osvVulnerabilityAlerts: true,

// Disable platform automerge (use Renovate's automerge instead)
platformAutomerge: false,

// Package-specific rules
packageRules: [
{
// Special handling for @stanlemon packages (my own packages)
groupName: 'my own packages',
minimumReleaseAge: null, // No waiting period for my own packages
minimumReleaseAge: null,
matchPackageNames: [
'/^@stanlemon/',
],
Expand All @@ -82,18 +52,16 @@
'minor',
'patch',
],
automergeType: 'branch', // Use branch automerge for faster deployment
automergeType: 'branch',
automerge: true,
},
{
// Disable updating nodejs package peer dependencies
matchDepTypes: [
'peerDependencies'
'peerDependencies',
],
enabled: false
enabled: false,
},
{
// Group Node.js updates together
groupName: 'nodejs updates',
matchPackageNames: [
'node',
Expand All @@ -112,7 +80,6 @@
],
},
{
// Override datasource for node package in npm to use node-version
matchPackageNames: [
'node',
],
Expand All @@ -123,7 +90,6 @@
overridePackageName: 'node',
},
{
// Override datasource for node package in nvm to use node-version
matchPackageNames: [
'node',
],
Expand All @@ -134,7 +100,6 @@
overridePackageName: 'node',
},
{
// Override datasource for @types/node to use node-version
matchPackageNames: [
'@types/node',
],
Expand All @@ -145,7 +110,6 @@
overridePackageName: 'node',
},
{
// Override datasource for node package in docker to use node-version
matchPackageNames: [
'node',
],
Expand All @@ -156,35 +120,34 @@
overridePackageName: 'node',
},
{
// Special handling for Node.js major version updates
groupName: 'node majors (LTS gate)',
matchDatasources: [
'node-version'
'node-version',
],
matchPackageNames: [
'node',
'@types/node',
],
matchUpdateTypes: [
'major'
'major',
],
minimumReleaseAge: '7 months', // Wait longer for major Node.js releases
internalChecksFilter: 'strict', // Strict internal checks for major updates
automerge: false, // Don't automerge major Node.js updates
minimumReleaseAge: '7 months',
internalChecksFilter: 'strict',
automerge: false,
},
{
// Catch-all rule for npm non-major updates
groupName: 'npm non-major (catch-all)',
groupSlug: 'npm-all-non-major',
matchManagers: [
'npm'
'npm',
],
matchUpdateTypes: [
'minor',
'patch',
],
// Exclude my own packages (handled separately)
excludePackageNames: ['/^@stanlemon\\//']
}
matchPackageNames: [
'!/^@stanlemon\\//',
],
},
],
}