Sparo optimizes performance of Git operations for your large frontend monorepo.
Find a file
2024-05-09 15:49:34 -07:00
.github fix: authentication in actions 2024-03-11 15:36:03 -07:00
.vscode Initial commit of files being released as open source 2024-02-20 21:42:28 -08:00
apps Merge pull request #67 from jzhang026/feat/checout-to-from-selector 2024-05-09 15:46:41 -07:00
build-tests chore: resolve comments 2024-04-29 20:32:16 +08:00
common chore: prepare minor version 2024-05-09 15:49:34 -07:00
zsh-plugin/sparo chore 2024-03-28 14:15:49 -07:00
.gitattributes Initial commit of files being released as open source 2024-02-20 21:42:28 -08:00
.gitignore Add Docusaurus patterns to .gitignore 2024-02-21 22:52:59 -08:00
.prettierignore Initial commit of files being released as open source 2024-02-20 21:42:28 -08:00
.prettierrc.js Initial commit of files being released as open source 2024-02-20 21:42:28 -08:00
cspell.config.yaml feat: sparo fetch --all will fetch all remote branches 2024-04-15 16:21:42 -07:00
LICENSE Initial commit of files being released as open source 2024-02-20 21:42:28 -08:00
README.md Improve project descriptions 2024-03-12 14:26:17 -07:00
rush.json chore: upgrade rush.js to fix Node.js CVE-2024-27980 security issue 2024-04-15 16:10:35 -07:00

Sparo

Monorepo for Sparo toolkit

Sparo optimizes performance of Git operations for your large frontend monorepo.

Key features

  • Familiar interface: The sparo command-line interface (CLI) wrapper offers better defaults and performance suggestions without altering the familiar git syntax. (The native git CLI is also supported.)

  • A proven solution: Git provides quite a lot of ingredients for optimizing very large repos; Sparo is your recipe for combining these features intelligently.

  • Simplified sparse checkout: Work with sparse checkout profiles instead of confusing "cones" and globs

  • Frontend integration: Sparo leverages Rush and PNPM workspace configurations, including the ability to automatically checkout project dependencies

  • Dual workflows: The sparo-ci tool implements a specialized checkout model optimized for continuous integration (CI) pipelines

  • Extra safeguards: Avoid common Git mistakes such as checkouts with staged files outside the active view

  • Go beyond Git hooks: Optionally collect anonymized Git timing metrics in your monorepo, enabling your build team to set data-driven goals for local developer experience (not just CI!)

    (Metrics are transmitted to your own service and are not accessible by any other party.)

For details, consult the Sparo documentation.

Published Packages

Folder Version Changelog Package
/apps/sparo npm version changelog sparo
/apps/sparo-lib npm version sparo-lib

Unpublished Local Projects

Folder Description
/apps/website The Sparo documentation website
/build-tests/sparo-output-test Building this project tests Sparo command-line outputs
/build-tests/sparo-real-repo-test Building this project tests Sparo by cloning a real repository
/build-tests/test-utilities Code shared between the build test projects in this repository

Contributing

Building the projects in this monorepo:

  1. Install the RushJS tool:

    npm install -g @microsoft/rush
    
  2. Clone the repo:

    git clone https://github.com/tiktok/sparo.git
    
  3. Install the dependencies

    cd sparo
    rush install
    
  4. Build all projects

    rush build
    

How to invoke your locally build sparo command:

cd apps/sparo
node lib/start.js