@gfmio/config-renovate
v0.0.0
Published
Composable Renovate configuration presets for various programming languages and project types
Downloads
103
Maintainers
Readme
@gfmio/config-renovate
Composable Renovate configuration presets for automated dependency updates across multiple language ecosystems.
Overview
This repository provides 100+ modular Renovate presets that can be composed to create customized dependency update strategies. Instead of maintaining complex Renovate configurations in each repository, you can combine presets that fit your project's needs.
Supported Ecosystems:
- JavaScript/TypeScript (npm, yarn, pnpm, Bun)
- Python (pip, poetry, pipenv, pdm, uv)
- Rust (Cargo)
- Go (Go modules)
- Swift (Swift Package Manager)
- Kotlin/Java (Gradle, Maven)
- Nix (flakes, NixOS, nix-darwin)
Quick Start
Option 1: Use a Complete Preset (Recommended)
The fastest way to get started is using one of the 33 ready-to-use full presets:
JavaScript/TypeScript projects (via npm):
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["@gfmio/config-renovate:presets/full/typescript-library"]
}Other languages (via GitHub):
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>gfmio/config-renovate:presets/full/rust-library"]
}See the Full Presets section for a complete list.
Option 2: Compose Individual Presets
For more control, compose individual presets:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"github>gfmio/config-renovate:presets/base",
"github>gfmio/config-renovate:presets/security",
"github>gfmio/config-renovate:presets/automerge",
"github>gfmio/config-renovate:presets/schedule",
"github>gfmio/config-renovate:presets/python/library",
"github>gfmio/config-renovate:presets/python/tooling/pytest",
"github>gfmio/config-renovate:presets/python/tooling/ruff"
]
}Installation
For JavaScript/TypeScript Projects
Install the npm package (allows shorter preset references):
npm install -D @gfmio/config-renovate
# or
yarn add -D @gfmio/config-renovate
# or
pnpm add -D @gfmio/config-renovate
# or
bun add -D @gfmio/config-renovateThen reference presets using the shorter syntax:
{
"extends": ["@gfmio/config-renovate:presets/base"]
}For Other Languages
No installation needed. Reference presets directly via GitHub:
{
"extends": ["github>gfmio/config-renovate:presets/base"]
}Full Presets
Complete, batteries-included configurations combining base settings, security, automerge, and ecosystem-specific rules:
JavaScript/TypeScript
| Preset | Description |
|--------|-------------|
| presets/full/typescript-library | TypeScript library with Biome, Vitest, tsup |
| presets/full/node-app | Node.js application with ESLint and Prettier |
| presets/full/react-frontend | React application with Vite |
| presets/full/bun-library | Bun library with Biome |
| presets/full/cloudflare-worker | Cloudflare Worker with Wrangler |
| presets/full/monorepo | JavaScript/TypeScript monorepo |
Python
| Preset | Description |
|--------|-------------|
| presets/full/python-library | Python library with Poetry, pytest, mypy, ruff |
| presets/full/python-app | Python application with uv and ruff |
| presets/full/python-jupyter | Jupyter notebook project |
| presets/full/python-ml | ML/AI project with PyTorch/TensorFlow/Transformers |
Rust
| Preset | Description |
|--------|-------------|
| presets/full/rust-library | Rust library with Serde and Tokio |
| presets/full/rust-cli | Rust CLI application with Clap |
| presets/full/rust-web-service | Rust web service with Axum |
| presets/full/rust-wasm | Rust WASM project with wasm-bindgen |
Go
| Preset | Description |
|--------|-------------|
| presets/full/go-library | Go library package |
| presets/full/go-cli | Go CLI application with Cobra |
| presets/full/go-web-service | Go web service with Gin |
| presets/full/go-grpc-service | Go gRPC service |
Swift
| Preset | Description |
|--------|-------------|
| presets/full/swift-library | Swift library package |
| presets/full/swift-cli | Swift CLI application |
| presets/full/swift-ios-app | iOS/macOS app with SwiftUI |
| presets/full/swift-vapor | Vapor web application |
Kotlin/Java
| Preset | Description |
|--------|-------------|
| presets/full/kotlin-library | Kotlin library with Coroutines |
| presets/full/kotlin-spring-service | Kotlin Spring Boot service |
| presets/full/kotlin-ktor-service | Kotlin Ktor service |
| presets/full/android-app | Android app with Compose and Hilt |
Nix
| Preset | Description |
|--------|-------------|
| presets/full/nix-flake | Nix flake project |
| presets/full/nix-devshell | Nix development shell |
| presets/full/nixos | NixOS system configuration |
| presets/full/nix-darwin | nix-darwin macOS configuration |
Modular Presets
Base Presets
Foundation presets that work across all languages:
| Preset | Description |
|--------|-------------|
| presets/base | Dependency dashboard, labels, config migration, UTC timezone |
| presets/security | Vulnerability alerts with automerge for security patches |
| presets/automerge | Automerge minor/patch updates, require approval for major |
| presets/schedule | Weekly updates (Monday mornings), monthly lock file maintenance |
Language Ecosystem Presets
Each ecosystem provides base configuration plus project type specialization:
Core:
presets/javascript/base- Common settings for npm/yarn/pnpm/bunpresets/javascript/library- Libraries with semantic commits and version rangespresets/javascript/node- Node.js apps, CLIs, servicespresets/javascript/bun- Bun runtime-specific configurationpresets/javascript/frontend- React, Vue, Svelte, Next.js, Vitepresets/javascript/monorepo- Monorepo workspace configurationpresets/javascript/cloudflare-workers- Cloudflare Workers
Tooling:
presets/javascript/tooling/typescript- TypeScript and @types packagespresets/javascript/tooling/biome- Biome toolchainpresets/javascript/tooling/eslint- ESLint packagespresets/javascript/tooling/prettier- Prettier packagespresets/javascript/tooling/vitest- Vitest testing frameworkpresets/javascript/tooling/vitepress- VitePress documentation
Core:
presets/python/base- Common settings for pip/poetry/pipenv/pdm/uvpresets/python/library- Libraries with version rangespresets/python/app- Applications with pinned dependenciespresets/python/jupyter- Jupyter notebook projectspresets/python/ml- ML/AI projects with PyTorch, TensorFlow, Transformers
Tooling:
presets/python/tooling/pytest- pytest testing frameworkpresets/python/tooling/black- Black code formatterpresets/python/tooling/ruff- Ruff linter and formatterpresets/python/tooling/mypy- mypy type checkerpresets/python/tooling/poetry- Poetry package managerpresets/python/tooling/uv- uv package managerpresets/python/tooling/sphinx- Sphinx documentation
Core:
presets/rust/base- Common settings for Cargo projectspresets/rust/library- Library crates with version rangespresets/rust/binary- Binary crates with pinned dependenciespresets/rust/wasm- WASM projects with wasm-bindgen
Tooling:
presets/rust/tooling/tokio- Tokio async runtimepresets/rust/tooling/serde- Serde serializationpresets/rust/tooling/clap- Clap CLI frameworkpresets/rust/tooling/tracing- Tracing instrumentationpresets/rust/tooling/axum- Axum web framework
Core:
presets/go/base- Common settings for Go modulespresets/go/library- Library packages with compatible versionspresets/go/app- Applications and services
Tooling:
presets/go/tooling/gin- Gin web frameworkpresets/go/tooling/echo- Echo web frameworkpresets/go/tooling/cobra- Cobra CLI frameworkpresets/go/tooling/grpc- gRPC and Protocol Bufferspresets/go/tooling/testify- Testify testing framework
Core:
presets/swift/base- Common settings for Swift Package Managerpresets/swift/library- Library packages with version rangespresets/swift/app- Applications and CLIspresets/swift/ios- iOS/macOS applications
Tooling:
presets/swift/tooling/vapor- Vapor web frameworkpresets/swift/tooling/alamofire- Alamofire HTTP networkingpresets/swift/tooling/kingfisher- Kingfisher image loadingpresets/swift/tooling/swiftui- SwiftUI packages (TCA, etc.)
Core:
presets/kotlin/base- Common settings for Gradle and Mavenpresets/kotlin/library- Libraries with version rangespresets/kotlin/app- Applications and servicespresets/kotlin/android- Android applications
Tooling:
presets/kotlin/tooling/spring- Spring Boot and Frameworkpresets/kotlin/tooling/ktor- Ktor web frameworkpresets/kotlin/tooling/coroutines- Kotlin Coroutinespresets/kotlin/tooling/serialization- Serialization librariespresets/kotlin/tooling/testing- Testing frameworkspresets/kotlin/tooling/dagger- Dagger and Hilt DIpresets/kotlin/tooling/room- Android Room database
Core:
presets/nix/base- Common settings for Nix flakespresets/nix/flake- Nix flake configurationpresets/nix/devshell- Development shell configurationpresets/nix/nixos- NixOS system configuration
Tooling:
presets/nix/tooling/home-manager- Home Managerpresets/nix/tooling/darwin- nix-darwin for macOSpresets/nix/tooling/flake-parts- flake-parts frameworkpresets/nix/tooling/devenv- devenv.sh frameworkpresets/nix/tooling/fenix- fenix Rust toolchainpresets/nix/tooling/nixpkgs-fmt- Nix formatters
CI/CD Presets
| Preset | Description |
|--------|-------------|
| presets/ci/github-actions | GitHub Actions with automerge |
Key Features
Security-First
- Vulnerability Alerts: Automatically enabled with "security" label
- Security Patches: Automerge patches for stable (non-0.x) versions
- No Schedule Restrictions: Security updates run immediately
Smart Automerge
- Minor/Patch Updates: Automerged using GitHub's native auto-merge
- Major Updates: Require approval via dependency dashboard
- Squash Strategy: Clean commit history
Intelligent Scheduling
- Weekly Updates: Monday mornings before 6am UTC
- Lock File Maintenance: First day of each month
- Rate Limiting: 2 PRs/hour, 10 concurrent (20/4 for monorepos)
Version Range Strategies
Libraries (maximize compatibility):
- Range Strategy:
bump- maintains semver ranges - Rationale: Don't break downstream consumers
Applications (maximize reproducibility):
- Range Strategy:
pin- exact versions - Lock File Maintenance: Enabled monthly
- Rationale: Reproducible builds
Package Grouping
Automatically groups related packages to reduce PR noise:
- Monorepo Packages: Detected and grouped automatically
- Framework Families: React, Vue, PyTorch, Spring Boot, etc.
- Toolchains: TypeScript + @types, Rust toolchain, Python version
- Dev Dependencies: Separate groups for testing, linting, formatting
Customization
Override Schedule
{
"extends": ["github>gfmio/config-renovate:presets/base"],
"schedule": ["every weekend"]
}Disable Automerge
{
"extends": ["github>gfmio/config-renovate:presets/automerge"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch"],
"automerge": false
}
]
}Add Custom Grouping
{
"extends": ["github>gfmio/config-renovate:presets/python/base"],
"packageRules": [
{
"groupName": "Internal packages",
"matchPackageNames": ["my-company-*"]
}
]
}Extend Stability Days
{
"extends": ["github>gfmio/config-renovate:presets/full/python-ml"],
"packageRules": [
{
"matchPackageNames": ["torch", "tensorflow"],
"minimumReleaseAge": "7 days"
}
]
}Examples
See the examples/ directory for complete configurations demonstrating:
- Simple usage with full presets
- Custom package grouping
- Schedule overrides
- Multi-ecosystem projects
Architecture
Layered Preset System
Presets are organized in four layers from general to specific:
- Base Layer: Universal settings (dashboard, labels, timezone)
- Language Layer: Ecosystem-specific configuration
- Project Type Layer: Library vs application vs monorepo
- Tooling Layer: Fine-grained package grouping
Composition Example
{
"extends": [
"github>gfmio/config-renovate:presets/base", // Layer 1
"github>gfmio/config-renovate:presets/security", // Layer 1
"github>gfmio/config-renovate:presets/automerge", // Layer 1
"github>gfmio/config-renovate:presets/python/base", // Layer 2
"github>gfmio/config-renovate:presets/python/library", // Layer 3
"github>gfmio/config-renovate:presets/python/tooling/pytest" // Layer 4
]
}Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines on:
- Adding new language ecosystems
- Creating tooling presets
- Testing and validation
- Documentation standards
Documentation
- User Guide - Detailed usage documentation
- Developer Guide - Architecture and development
- Examples - Real-world configurations
License
Resources
Author
Frédérique Mittelstaedt (@gfmio)
