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

Out of order execution of build command #591

@weyert

Description

@weyert

What version of Turborepo are you using?

1.1.0-canary.1

What package manager are you using / does the bug impact?

pnpm

What operating system are you using?

Mac

Describe the Bug

I have a monorepository that contains a lot of packages which depend on one another to be able to build the web-application. Only turbo appears to start build-commands for packages too early causing the underlying dependencies not having build yet and causing the build task for the webapp-package to fail.

See for example:

❯ pnpm exec turbo run build --no-deps --include-dependencies --cache-dir=.turbo-cache --concurrency=1
• Packages in scope: @company/account-api, @company/api, @company/webapp, @company/webapp-react, @company/auth-api, @company/browserlist-config, @company/cli, @company/communication-api, @company/core, @company/core-lite, @company/eslint-config, @company/eslint-plugin, @company/integration-api, @company/logging, @company/opentelemetry-configurator, @company/opentelemetry-express-metrics, @company/opentelemetry-node-metrics, @company/opentelemetry-testing-utils, @company/opentelemetry-typeorm, @company/payment-api, @company/postcss-config, @company/prettier-config, @company/server, @company/stylelint-config, @company/subscription-api, @company/tailwindcss-config, @company/task-api, @company/typescript-configs, webapp, communication-service, demo, task-service
• Remote computation caching enabled (experimental)
• Running build in 32 packages
@company/api:build: cache miss, executing bd8b685e4b1f5127
@company/api:build: 
@company/api:build: > @company/api@14.3.0-alpha.7 build /Users/weyert/Development/Projects/company/monorepo-playground/services/api
@company/api:build: > tsc
@company/api:build: 
@company/cli:build: cache miss, executing 47072714cb239d41
@company/cli:build: 
@company/cli:build: > @company/cli@8.1.1 build /Users/weyert/Development/Projects/company/monorepo-playground/packages/company-scripts
@company/cli:build: > node src build
@company/cli:build: 
@company/cli:build: Successfully compiled 27 files with Babel (1106ms).
@company/core-lite:build: cache miss, executing f803de9acc61d58c
@company/core-lite:build: 
@company/core-lite:build: > @company/core-lite@2.5.1 build /Users/weyert/Development/Projects/company/monorepo-playground/packages/core-lite
@company/core-lite:build: > company-scripts build --typescript
@company/core-lite:build: 
@company/webapp:build: cache miss, executing 33d38f9dfd9e83b0
@company/webapp:build: 
@company/webapp:build: > @company/webapp@0.35.1 build /Users/weyert/Development/Projects/company/monorepo-playground/publicPackages/company-webapp
@company/webapp:build: > NODE_ENV=production company-scripts build --bundle
@company/webapp:build: 
@company/webapp:build: [cjs] 
@company/webapp:build: [cjs] /Users/weyert/Development/Projects/company/monorepo-playground/publicPackages/company-webapp/src/index.ts → dist/@company/webapp.cjs.js...
@company/webapp:build: [umd.min] 
@company/webapp:build: [umd.min] /Users/weyert/Development/Projects/company/monorepo-playground/publicPackages/company-webapp/src/index.ts → dist/@company/webapp.umd.min.js...
@company/webapp:build: [esm] 
@company/webapp:build: [esm] /Users/weyert/Development/Projects/company/monorepo-playground/publicPackages/company-webapp/src/index.ts → dist/@company/webapp.esm.js...
@company/webapp:build: [umd] 
@company/webapp:build: [umd] /Users/weyert/Development/Projects/company/monorepo-playground/publicPackages/company-webapp/src/index.ts → dist/@company/webapp.umd.js...
@company/webapp:build: [esm] created dist/@company/webapp.esm.js in 4.7s
@company/webapp:build: [cjs] created dist/@company/webapp.cjs.js in 4.7s
@company/webapp:build: [esm] /Users/weyert/Development/Projects/company/monorepo-playground/node_modules/.pnpm/cross-env@7.0.3/node_modules/cross-env/src/bin/cross-env.js BUILD_ROLLUP=true BUILD_FORMAT=esm BUILD_MINIFY=false NODE_ENV=development BUILD_PREACT=false BUILD_SIZE_SNAPSHOT=undefined BUILD_NODE=false BUILD_REACT_NATIVE=false rollup --config exited with code 0
@company/webapp:build: [cjs] /Users/weyert/Development/Projects/company/monorepo-playground/node_modules/.pnpm/cross-env@7.0.3/node_modules/cross-env/src/bin/cross-env.js BUILD_ROLLUP=true BUILD_FORMAT=cjs BUILD_MINIFY=false NODE_ENV=development BUILD_PREACT=false BUILD_SIZE_SNAPSHOT=undefined BUILD_NODE=false BUILD_REACT_NATIVE=false rollup --config exited with code 0
@company/webapp:build: [umd] created dist/@company/webapp.umd.js in 9.1s
@company/webapp:build: [umd] /Users/weyert/Development/Projects/company/monorepo-playground/node_modules/.pnpm/cross-env@7.0.3/node_modules/cross-env/src/bin/cross-env.js BUILD_ROLLUP=true BUILD_FORMAT=umd BUILD_MINIFY=false NODE_ENV=development BUILD_PREACT=false BUILD_SIZE_SNAPSHOT=undefined BUILD_NODE=false BUILD_REACT_NATIVE=false rollup --config --sourcemap exited with code 0
@company/webapp:build: [umd.min] created dist/@company/webapp.umd.min.js in 14.9s
@company/webapp:build: [umd.min] /Users/weyert/Development/Projects/company/monorepo-playground/node_modules/.pnpm/cross-env@7.0.3/node_modules/cross-env/src/bin/cross-env.js BUILD_ROLLUP=true BUILD_FORMAT=umd BUILD_MINIFY=true NODE_ENV=production BUILD_PREACT=false BUILD_SIZE_SNAPSHOT=undefined BUILD_NODE=false BUILD_REACT_NATIVE=false rollup --config --sourcemap exited with code 0
@company/webapp:build: Generating TypeScript definitions
@company/webapp:build: TypeScript definitions generated
@company/opentelemetry-express-metrics:build: cache miss, executing 00cdac6f55e822b3
@company/opentelemetry-express-metrics:build: 
@company/opentelemetry-express-metrics:build: > @company/opentelemetry-express-metrics@4.5.1 build /Users/weyert/Development/Projects/company/monorepo-playground/packages/opentelemetry-express-metrics
@company/opentelemetry-express-metrics:build: > company-scripts build --typescript
@company/opentelemetry-express-metrics:build: 
@company/opentelemetry-testing-utils:build: cache miss, executing d3b7c802e5b6c936
@company/opentelemetry-testing-utils:build: 
@company/opentelemetry-testing-utils:build: > @company/opentelemetry-testing-utils@2.3.1 build /Users/weyert/Development/Projects/company/monorepo-playground/packages/opentelemetry-testing-utils
@company/opentelemetry-testing-utils:build: > company-scripts build --typescript
@company/opentelemetry-testing-utils:build: 
@company/opentelemetry-node-metrics:build: cache miss, executing 380e353be25055b7
@company/opentelemetry-node-metrics:build: 
@company/opentelemetry-node-metrics:build: > @company/opentelemetry-node-metrics@4.3.1 build /Users/weyert/Development/Projects/company/monorepo-playground/packages/opentelemetry-node-metrics
@company/opentelemetry-node-metrics:build: > company-scripts build --typescript
@company/opentelemetry-node-metrics:build: 
webapp:prebuild: cache miss, executing 4793af6e7dae1dcf
webapp:prebuild: 
webapp:prebuild: > webapp@1.72.1 prebuild /Users/weyert/Development/Projects/company/monorepo-playground/projects/webapp
webapp:prebuild: > pnpm exec tsc --project tsconfig.server.json
webapp:prebuild: 
webapp:prebuild: server/server.ts(5,48): error TS2307: Cannot find module '@company/opentelemetry-configurator' or its corresponding type declarations.
webapp:prebuild: server/server.ts(7,28): error TS2307: Cannot find module '@company/logging' or its corresponding type declarations.
webapp:prebuild: src/tracing.ts(1,69): error TS2307: Cannot find module '@company/opentelemetry-configurator' or its corresponding type declarations.
webapp:prebuild: src/tracing.ts(10,3): error TS7006: Parameter 'item' implicitly has an 'any' type.
webapp:prebuild: src/utils/sanitiseRequestUri.ts(1,36): error TS2307: Cannot find module '@company/opentelemetry-configurator' or its corresponding type declarations.
webapp:prebuild:  ELIFECYCLE  Command failed with exit code 2.
webapp:prebuild: Error: command finished with error: exit status 1

As you can see in the above trace it started webapp:prebuild before the dependencies of the web app-package have been build. The webapp has dependencies on @company/opentelemetry-configurator and @company/logging but these packages haven't been build yet as can be seen in the above log.

Expected Behavior

I would expect that turbo starts the build task after all underlying dependencies' build task have been executed successfully.

To Reproduce

Working on this

The defined pipeline in package.json in the root of the mono repo:

  "turbo": {
    "baseBranch": "origin/main",
    "npmClient": "pnpm",
    "globalDependencies": [
      ".env",
      ".env.local",
      ".env.staging",
      "$WEBAPP_STABLE_LINK"
    ],
    "pipeline": {
      "build": {
        "dependsOn": [
          "^build"
        ],
        "outputs": [
          "dist/**",
          "lib/**",
          ".next/**",
          "public/dist/**"
        ]
      },
      "postbuild": {
        "dependsOn": [
          "^postbuild"
        ]
      },
      "storybook": {
        "cache": false
      },
      "test": {
        "dependsOn": [
          "^build"
        ],
        "outputs": [
          "coverage/**"
        ]
      },
      "lint": {
        "dependsOn": [
          "^build"
        ],
        "output": [
          "coverage/**"
        ]
      },
      "start": {
        "dependsOn": [
          "^build"
        ]
      },
      "format": {
        "cache": false
      },
      "dev": {
        "dependsOn": [
          "build"
        ],
        "cache": false
      },
      "validate": {
        "cache": false
      },
      "clean": {
        "cache": false
      },
      "prebuild": {
        "dependsOn": [
          "^prebuild"
        ],
        "outputs": [
          "dist/**",
          "public/dist/**"
        ]
      },
      "webapp#build": {
        "dependsOn": [
          "^build",
          "prebuild"
        ],
        "outputs": [
          "dist/**",
          ".next/**",
          "public/dist/**"
        ]
      }
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions