▲ Setting up remote caching in your Turborepo project
Here's my recommended approach for setting up remote caching in your Turborepo project. You can read more about this topic in the official Turborepo documentation.
Step 1: Update turbo.json
Modify the turbo.json file at your project root to include signature validation
json
{
"remoteCache": { "signature": true }
}Step 2: Install dotenv-cli
Install the dotenv-cli npm package:
sh
# You may have to add -W if you are installing this on your workspace root
pnpm add -D dotenv-cliStep 3: Create a .env File
Create a .env file at your project root with the following content:
TURBO_API=YOUR_API_URL # Remember to remove the trailing slash
TURBO_TEAM=team_my_team_name
TURBO_TOKEN=SECRET # The turbo token must be a valid Bearer auth token
TURBO_REMOTE_CACHE_SIGNATURE_KEY=SECRETKeep the following in mind
- Replace
SECRETandYOUR_API_URLwith your chosen values. - Turborepo requires that the
TURBO_APIvalue must not end with a trailing slash - The
TURBO_TEAMvalue must begin withteam_ - Remember to add the
.envfile to.gitignore - If you are building your project in some remote CI tool (like Github Actions) you need to make these environment variables available to your build script
Step 4: Modify Turbo Commands
Load the .env file prior to execution. Instead of running a command like turbo run build directly, use dotenv -- turbo run build. This loads everything in our .env file into the process's environment variables.
Here's how to modify your scripts in package.json to use dotenv-cli:
json
{
"scripts": {
"build": "dotenv -- turbo run build",
"dev": "dotenv -- turbo run dev",
"lint": "dotenv -- turbo run lint",
"test": "dotenv -- turbo run test"
}
}And that's it 🎉🎉
Whenever you run a turbo command you will see Remote cache enabled in it's log output
pnpm lint
$ dotenv -- turbo run lint
• Packages in scope: turborepo-project, webapp, docs
• Running lint in 3 packages
• Remote caching enabled
...output
Tasks: 3 successful, 3 total
Cached: 3 cached, 3 total
Time: 1.174s >>> FULL TURBO
✨ Done in 3.54s.