Seamlessly keep your repo in sync with turborepo-template.
turborepo-template-upgrade
is a small utility built for repositories that were bootstrapped using react18-tools/turborepo-template.
Instead of manually copy-pasting template updates (bug fixes, CI improvements, tooling upgrades), this package provides:
- One command upgrade β pull changes from the template into your repo.
- Safe patching β applies diffs instead of overwriting.
- Smart conflict resolution β especially for root
package.json
file.
You donβt need to add this as a runtime dependency. Use it as a dev tool:
npm install -D turborepo-template-upgrade
# or
yarn add -D turborepo-template-upgrade
Inside a repo created with turborepo-template:
npx turborepo-template-upgrade
# Basic usage with debug logging
npx turborepo-template-upgrade --debug
# Preview changes without applying
npx turborepo-template-upgrade --dry-run
# Skip dependency installation
npx turborepo-template-upgrade --skip-install
# Exclude specific paths
npx turborepo-template-upgrade --exclude "docs,examples"
# Upgrade from specific commit, tag, or branch
npx turborepo-template-upgrade --from v1.2.3
npx turborepo-template-upgrade --from abc123def
npx turborepo-template-upgrade --from feature-branch
Available Options:
--debug
/-d
- Enable detailed logging--dry-run
- Preview changes without applying--template-url <url>
- Custom template repository URL--exclude <paths>
- Comma-separated paths to exclude--skip-install
- Skip dependency reinstallation--remote-name <name>
- Custom git remote name--max-retries <num>
- Maximum patch retry attempts--skip-clean-check
- Skip git tree clean validation--from <ref>
- Specific commit hash, tag, or branch to upgrade from--help
/-h
- Show help message
This will:
- Fetch the latest changes from the template repo.
- Compute a
git diff
since your last upgrade. - Apply the patch on top of your repo.
- Attempt to auto-resolve
package.json
conflicts. - Store the last applied commit in
.turborepo-template.lst
.
If there are remaining conflicts, youβll see them in .template.patch
.
Biome Migration: The turborepo-template has migrated from ESLint + Prettier to Biome for linting and formatting. If you prefer to continue using ESLint + Prettier, configure your upgrade to use the legacy branch:
See discussion here: react18-tools/turborepo-template#69
npx turborepo-template-upgrade --template-url https://github.com/react18-tools/turborepo-template --from legacy/eslint-prettier
Or add to your .tt-upgrade.config.json
:
{
"templateUrl": "https://github.com/react18-tools/turborepo-template",
"from": "legacy/eslint-prettier"
}
Create .tt-upgrade.config.json
in your repo root for persistent settings:
{
"debug": false,
"skipInstall": true,
"excludePaths": ["docs", "examples"],
"templateUrl": "https://github.com/custom/template",
"remoteName": "upstream",
"maxPatchRetries": 5,
"from": "v1.2.3"
}
CLI options override config file settings.
package.json
merges are handled automatically:- Keeps your dependencies.
- Brings in template upgrades.
- Deduplicates versions.
- For other files, standard
git apply --3way
conflict markers may appear.
# 1. Upgrade with debug logging
npx turborepo-template-upgrade --debug
# 2. Review conflicts (if any)
git status
cat .template.patch
# 3. Commit changes
git add .
git commit -m "chore: upgrade template"
# Preview what would change
npx turborepo-template-upgrade --dry-run
# Apply if satisfied
npx turborepo-template-upgrade
# Skip installation and exclude docs
npx turborepo-template-upgrade --skip-install --exclude "docs,examples"
# Upgrade from specific version
npx turborepo-template-upgrade --from v2.1.0
# Use legacy ESLint + Prettier setup
npx turborepo-template-upgrade --from legacy/eslint-prettier
- Template repo is added as a Git remote (
template
). - Last applied commit hash is tracked in
.turborepo-template.lst
. git diff
between last applied commit βtemplate/main
.- Patch applied locally with
git apply --3way
.
Thanks to the react18-tools community for shaping the turborepo ecosystem.
This library is licensed under the MPL-2.0 open-source license.
Please enroll in our courses or sponsor our work.
with π by Mayank Kumar Chaudhari