Skip to content

About

Puro is a powerful tool for installing and upgrading Flutter versions, it is essential for developers that work on multiple projects or have slower internet.

With Puro you can:

  • Use different versions of Flutter at the same time
  • Download new versions twice as fast with significantly less disk space and internet bandwidth
  • Use versions globally or per-project
  • Automatically configure IDE settings with a single command

Installation

Puro can be installed on Windows with PowerShell (as your current user, do not use administrator):

Invoke-WebRequest -Uri "https://puro.dev/builds/1.4.6/windows-x64/puro.exe" -OutFile "$env:temp\puro.exe"; &"$env:temp\puro.exe" install-puro --promote

It also has a standalone executable:

Standalone


note: Flutter requires git which can be installed at https://git-scm.com/download/win

Puro can be installed on Linux with the following command:

curl -o- https://puro.dev/install.sh | PURO_VERSION="1.4.6" bash

Or as a standalone executable:

Standalone


note: Flutter requires git which can be installed with most package managers e.g. apt:

sudo apt install git

Puro can be installed on Mac with the following command:

curl -o- https://puro.dev/install.sh | PURO_VERSION="1.4.6" bash

Or as a standalone executable:

Standalone


note: Flutter requires git which can be installed with Homebrew for macOS:

brew install git

Quick Start

Once puro is installed, set up a new environment with the create command:

# Create new environment from a release channel
puro create my_env stable

# Or from a version
puro create my_env 3.3.6

# Or from a commit
puro create my_env d9111f6

# Or from a fork
puro create my_env --fork git@github.com:pingbird/flutter.git

Inside a Flutter project, run the use command to switch to the environment you created:

puro use my_env

Puro will automatically detect if you are using VSCode or Android Studio (IntelliJ) and generate the necessary configs. If this is a new project without a workspace, add --vscode or --intellij to generate them regardless.

You can also configure the global default with --global or -g:

puro use -g my_env

See the Manual for more information.

Performance

Puro implements a few optimizations that make installing Flutter as fast as possible. First-time installations are 20% faster while improving subsequent installations by a whopping 50-95%:

This also translates into much lower network usage:

How it works

Puro achieves these performance gains with a few smart optimizations:

  • Parallel git clone and engine download
  • Global cache for git history
  • Global cache for engine versions

With other approaches, each Flutter repository is in its own folder, requiring you to download and store the git history, engine, and framework of each version:

Puro implements a technology similar to GitLab's object deduplication to avoid downloading the same git objects over and over again. It also uses symlinks to share the same engine version between multiple installations:

Comments