这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@jaredpalmer
Copy link
Contributor

@jaredpalmer jaredpalmer commented Jan 4, 2022

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 PR, you can now change a task hash by doing any of the following:

  • (new) Including environment variables in a dependsOn in your pipeline 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,
    ],
  }
}

@vercel
Copy link
Contributor

vercel bot commented Jan 4, 2022

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/vercel/turbo-site/AeCgiXY2F1qXvKJUdC4ACjGoZgpJ
✅ Preview: https://turbo-site-git-refactor-hashable-env-vars.vercel.sh

@jaredpalmer jaredpalmer changed the title Hash env vars redux Hash env vars Jan 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants