JSPM

  • Created
  • Published
  • Downloads 40
  • Score
    100M100P100Q50140F
  • License MPL-2.0

Upgrade projects based on a Turborepo template using selective git diffs, with support for ignore paths and skipped packages.

Package Exports

  • @r18/upgrade

Readme

turborepo-template-upgrade

test Maintainability codecov Version Downloads npm bundle size Gitpod ready-to-code

Seamlessly keep your repo in sync with turborepo-template.

πŸš€ Purpose

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.

πŸ“¦ Installation

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

⚑ Usage

Inside a repo created with turborepo-template:

npx turborepo-template-upgrade

We just released a shorthand -- pnpx tt-upgrade

CLI Options

# 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"

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
  • --help / -h - Show help message

This will:

  1. Fetch the latest changes from the template repo.
  2. Compute a git diff since your last upgrade.
  3. Apply the patch on top of your repo.
  4. Attempt to auto-resolve package.json conflicts.
  5. Store the last applied commit in .turborepo-template.lst.

If there are remaining conflicts, you’ll see them in .template.patch.


πŸ”§ Configuration

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
}

CLI options override config file settings.


🧩 Conflict Resolution

  • 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.

πŸ” Example Workflows

Basic Upgrade

# 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 Mode

# Preview what would change
npx turborepo-template-upgrade --dry-run

# Apply if satisfied
npx turborepo-template-upgrade

Custom Configuration

# Skip installation and exclude docs
npx turborepo-template-upgrade --skip-install --exclude "docs,examples"

πŸ›  How It Works

  • 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.

πŸ™ Acknowledgments

Thanks to the react18-tools community for shaping the turborepo ecosystem.

License

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