What's new?
Environment variable dependencies and hashing
When you use turbo
with tools which inline environment variables at build time (e.g. Next.js or Create React App), it is important you tell turbo
about it. Otherwise, you could ship a cached artifact with the wrong environment variables!
With this release, you can now change a task hash by doing any of the following:
- (new) Including environment variables in a
dependsOn
in yourpipeline
definition prefixed by a$
will impact the cache fingerprint on a per-task or per-package-task basis. - (new) Including environment variables in
globalDependencies
list prefixed by a$
will impact the cache fingerprint of all tasks. - Including files or globs of files in
globalDependencies
will impact the cache fingerprint of all tasks. - (new) The value of any environment variable that includes
THASH
in its name will impact the cache fingerprint of all tasks.
Example Configuration
{
"turbo": {
"pipeline": {
"build": {
"dependsOn": {
"^build"
// env vars will impact hashes of all "build" tasks
"$SOME_ENV_VAR"
},
"outputs": ["dist/**"]
},
"web#build": { // override settings for the "build" task for the "web" app
"dependsOn": [
"^build",
// env vars that will impact the hash of "build" task for only "web" app
"$STRIPE_SECRET_KEY",
"$NEXT_PUBLIC_STRIPE_PUBLIC_KEY",
"$NEXT_PUBLIC_ANALYTICS_ID",
],
"outputs": [".next/**"],
},
"docs#build": { // override settings for the "build" task for the "docs" app
"dependsOn": [
"^build",
// env vars that will impact the hash of "build" task for only "web" app
"$STRIPE_SECRET_KEY",
"$NEXT_PUBLIC_STRIPE_PUBLIC_KEY",
"$NEXT_PUBLIC_ANALYTICS_ID",
],
"outputs": [".next/**"],
}
},
"baseBranch": "origin/main",
"globalDependencies": [
"$GITHUB_TOKEN"// env var that will impact the hashes of all tasks,
"tsconfig.json" // file contents will impact the hashes of all tasks,
".env.*" // glob file contents will impact the hashes of all tasks,
],
}
}
Bugfixes
- Correctly show pnpx command in
create-turbo
- Treat symlink directory as directory in
globalDependencies
- Fix cpu overloading during long running tasks
- Better error message when
workspaces
are not defined
Commits
- Bump @babel/core from 7.16.0 to 7.16.7 by @dependabot in #477
- fix kitchen-sink test #466 by @kbenrafik in #473
- Bump @types/jest from 27.0.3 to 27.4.0 by @dependabot in #476
- docs: Fix gap on open mobile nav with banner by @jaredpalmer in #507
- docs: Papercuts by @jaredpalmer in #513
- docs: add missing flag for pnpm install command by @fwouts in #520
- docs: add privacy / security questions to faq by @jaredpalmer in #522
- fix: pnpx command is deprecated in version 6.x by @KieSun in #486
- fix: treat symlink directory as directory by @markjm in #532
- fix: Move runOptions stream checks before the
for
loop to prevent cpu load by @marcinbunsch in #529 - QoL changes for using examples by @markjm in #518
- Hash env vars by @jaredpalmer in #495
- fix: error when workspaces are not defined by @KarolNov in #472
New Contributors
- @kbenrafik made their first contribution in #473
- @fwouts made their first contribution in #520
- @KieSun made their first contribution in #486
- @markjm made their first contribution in #532
- @marcinbunsch made their first contribution in #529
- @KarolNov made their first contribution in #472
Full Changelog: v1.0.24...v1.0.25