run

turbo.json에 지정된 작업을 실행합니다.

Terminal
turbo run [tasks] [options] [-- [args passed to tasks]]
  • [tasks]: Turborepo는 한 번에 하나 또는 여러 작업을 실행할 수 있습니다. turbo를 통해 작업을 실행하려면 turbo.json에 지정되어야 합니다.
  • [options]: 옵션은 turbo run 명령어의 동작을 제어하는 데 사용됩니다. 사용 가능한 플래그 옵션은 아래에 설명되어 있습니다.
  • [-- [args passed to tasks]]: 하위 스크립트에 인수를 전달할 수도 있습니다. 모든 인수는 run 명령에 지정된 모든 작업에 전달됩니다.

Good to know: 

turbo runturbo의 별칭입니다. turbo run build lint check-typesturbo build lint check-types와 동일합니다. 사용 편의성을 위해 CI 파이프라인에서는 turbo run, 로컬에서는 전역 turbo 함께 turbo를 사용하는 것을 권장합니다.

작업이 제공되지 않으면 turbo는 저장소의 패키지에서 사용 가능한 작업을 표시합니다.

Terminal
turbo run

옵션

--affected

현재 브랜치의 변경 사항에 영향을 받는 패키지만 필터링합니다.

Terminal
turbo run build lint test --affected

기본적으로 이 플래그는 --filter=...[main...HEAD]와 동일합니다. 이는 Git의 관점에서 mainHEAD 사이의 변경 사항을 고려합니다.

비교를 위해서는 base와 head 사이의 모든 내용이 체크아웃에 존재해야 합니다. 체크아웃이 너무 얕으면 모든 패키지가 변경된 것으로 간주됩니다.

예를 들어, Git을 --filter=blob:none --depth=0으로 체크아웃하도록 설정하면 --affected가 올바르게 작동하는 데 필요한 히스토리를 확보할 수 있습니다.

각각의 시스템 환경 변수를 사용하여 기본 base와 head를 재정의할 수 있습니다.

Terminal
# Git 비교 base 재정의
TURBO_SCM_BASE=development turbo run build --affected
 
# Git 비교 head 재정의
TURBO_SCM_HEAD=your-branch turbo run build --affected

--cache <options>

기본값: local:rw,remote:rw

실행할 캐싱 소스를 지정합니다. 쉼표로 구분된 옵션 목록을 허용합니다:

  • local: 로컬 파일 시스템 캐시 사용
  • remote: Remote Cache 사용

캐싱 소스가 생략되면 읽기와 쓰기가 모두 비활성화됩니다.

캐시 소스는 다음 값을 사용합니다:

  • rw: 읽기 및 쓰기
  • r: 읽기 전용
  • w: 쓰기 전용
  • 없음 (local:): 캐시를 사용하지 않습니다. 캐시 소스 옵션을 생략하는 것과 동일합니다.
Terminal
# 로컬 캐시에서 읽기 및 쓰기. Remote Cache에서는 읽기만.
turbo run build --cache=local:rw,remote:r
 
# 로컬 캐시에서는 읽기만. Remote Cache에서 읽기 및 쓰기.
turbo run build --cache=local:r,remote:rw
 
# 로컬 캐시에서 읽기 및 쓰기. Remote Cache 활동 없음.
turbo run build --cache=local:rw
 
# 로컬 캐시를 사용하지 않음. Remote Cache에서는 읽기만.
turbo run build --cache=local:,remote:r

--cache-dir <path>

기본값: .turbo/cache

파일 시스템 캐시 디렉토리를 지정합니다.

Terminal
turbo run build --cache-dir="./my-cache"

변경할 때 디렉토리가 .gitignore에 있는지 확인하세요.

동일한 동작은 TURBO_CACHE_DIR=example/path 시스템 변수를 통해서도 설정할 수 있습니다.

--concurrency <number | percentage>

기본값: 10

작업 실행의 최대 동시성을 설정/제한합니다. 1 이상의 정수 또는 50%와 같은 백분율 값이어야 합니다.

  • 직렬 실행(한 번에 하나의 작업)을 강제하려면 1을 사용합니다.
  • 사용 가능한 모든 논리 프로세서를 사용하려면 100%를 사용합니다.
  • --parallel 플래그도 전달되면 이 옵션은 무시됩니다.
Terminal
turbo run build --concurrency=50%
turbo run test --concurrency=5

--continue[=<option>]

기본값: never

오류가 발생할 때(예: 작업에서 0이 아닌 종료 코드) turbo가 현재 및 대기 중인 작업을 처리하는 방법을 지정합니다.

  • --continue=never이고 오류가 발생하면 turbo는 모든 작업을 취소합니다.
  • --continue=dependencies-successful이고 오류가 발생하면 turbo는 종속 작업을 취소합니다. 종속성이 성공한 작업은 계속 실행됩니다.
  • --continue=always이고 오류가 발생하면 turbo는 종속성이 실패한 작업을 포함하여 모든 작업을 계속 실행합니다.
  • --continue가 값 없이 지정되면 기본값은 always입니다.

모든 경우에 turbo는 실행 중 발생한 가장 높은 종료 코드 값으로 종료됩니다.

Terminal
turbo run build --continue

--cwd <path>

기본값: 루트 turbo.json의 디렉토리

명령의 작업 디렉토리를 설정합니다.

Terminal
turbo run build --cwd=./somewhere/else/in/your/repo

--dangerously-disable-package-manager-check

Turborepo는 저장소의 lockfile을 사용하여 캐싱 동작, 패키지 그래프 등을 결정합니다. 이 때문에 Turborepo를 안정화하는 데 도움이 되도록 packageManager 필드를 사용합니다.

점진적 마이그레이션을 돕거나 packageManager 필드를 사용할 수 없는 상황에서 --dangerously-disable-package-manager-check를 사용하여 이 검사를 선택 해제하고 불안정한 lockfile이 예측할 수 없는 동작을 생성할 위험을 감수할 수 있습니다. 비활성화되면 Turborepo는 저장소에 의도된 패키지 매니저를 최선의 노력으로 검색을 시도합니다.

더 광범위한 적용을 위해 turbo.json의 설정 또는 TURBO_DANGEROUSLY_DISABLE_PACKAGE_MANAGER_CHECK 환경 변수를 사용하여 이 검사를 선택 해제할 수도 있습니다.

--dry / --dry-run

작업을 실행하는 대신 실행될 패키지와 작업에 대한 세부 정보를 표시합니다.

JSON 형식으로 출력을 얻으려면 --dry=json을 지정합니다.

작업 세부 정보에는 다음과 같은 유용한 정보가 포함됩니다(목록은 전체가 아님):

필드설명
taskIdpackage-name#task-name 형식의 작업 ID
task실행할 작업의 이름
package작업을 실행할 패키지
hash작업의 해시(캐싱에 사용됨)
hashOfExternalDependencies전역 해시
command작업을 실행하는 데 사용되는 명령
inputs해싱을 위해 고려된 파일 입력 목록
outputs캐시된 파일 출력 목록
dependencies이 작업 이전에 실행되어야 하는 작업
dependents이 작업 이후에 실행되어야 하는 작업
environmentVariablesenvpassThroughEnv에 지정된 환경 변수 목록

--env-mode <option>

type: string

작업의 런타임에서 사용 가능한 환경 변수를 제어합니다.

Good to know: 

PATH, SHELL, SYSTEMROOT는 항상 작업에서 사용할 수 있습니다.

옵션설명
strict (기본값)명시적으로 나열된 환경 변수만 사용 가능하도록 허용
loose모든 환경 변수를 사용 가능하도록 허용
Terminal
turbo run build --env-mode=loose

동일한 동작은 TURBO_ENV_MODE=strict 시스템 변수를 통해서도 설정할 수 있습니다.

strict

다음 키에 지정된 환경 변수만 작업에서 사용할 수 있습니다:

엄격 모드가 지정되거나 추론되면 구성에 관계없이 모든 작업이 strict 모드에서 실행됩니다.

loose

머신의 모든 환경 변수가 작업의 런타임에서 사용 가능하게 됩니다.

위의 strict에 나열된 키로 캐싱에 환경 변수가 고려되지 않을 때 위험할 수 있습니다. loose 모드에서는 캐시에서 잘못된 환경 변수로 패키지 버전을 복원할 가능성이 훨씬 높습니다.

--filter <string>

저장소 그래프에서 실행할 대상을 지정합니다. 여러 필터를 결합하여 고유한 대상 집합을 선택할 수 있습니다.

필터를 결합하여 패키지, 디렉토리, git 커밋의 조합을 만들 수 있습니다.

대상 유형설명예시
Packagepackage.json의 이름으로 패키지를 선택합니다.turbo run build --filter=ui
Directory작업을 실행할 패키지 목록을 캡처하기 위해 디렉토리를 지정합니다. 다른 필터와 함께 사용할 때는 {}로 래핑해야 합니다.turbo run build --filter=./apps/*
Git commitsGit 지정자를 사용하여 소스 제어 변경 사항이 있는 패키지를 지정합니다. []로 래핑해야 합니다.turbo run build --filter=[HEAD^1]

Good to know: 

-F--filter의 별칭입니다.

필터링을 위한 마이크로 구문

  • !: 선택에서 대상을 제외합니다.
  • ... 패키지 사용: 대상을 기준으로 패키지 그래프의 모든 패키지를 선택합니다. 패키지 이름 앞에 ...를 사용하면 대상의 종속자를 선택하고, 패키지 이름 뒤에 ...를 사용하면 대상의 종속성을 선택합니다.
  • ... Git 커밋 사용: [<from commit>]...[<to commit>]를 사용하여 범위를 선택합니다.
  • ^: ...를 사용할 때 선택에서 대상을 생략합니다.

필터링에 대한 심층적인 논의와 실용적인 사용 사례는 작업 실행 페이지를 참조하세요.

작업 식별자 사용

package-name#task-name 형식으로 특정 패키지에 대한 특정 작업을 실행할 수도 있습니다.

Terminal
turbo run web#lint

Good to know: 

이것은 작업의 종속성도 실행합니다. 종속성 없이 작업을 실행하려면 --only 플래그를 사용하세요.

고급 필터링 예제

여러 필터를 결합하여 대상을 더욱 세밀하게 조정할 수 있습니다. 여러 필터는 합집합으로 결합되며, 부정 필터는 합집합의 결과에서 패키지를 제거합니다.

Terminal
# 마지막 커밋 이후 변경된 `apps` 하위 디렉토리의 모든 패키지
turbo run build --filter={.apps/*}[HEAD^1]
 
# ./apps/admin을 제외한 `apps` 하위 디렉토리의 모든 패키지
turbo run build --filter=./apps/* --filter=!./apps/admin
 
# docs 및 web 패키지에 대한 build 작업 실행
turbo run build --filter=docs --filter=web
 
# 'my-feature' 브랜치의 변경 사항에 의존하는 모든 것을 빌드
turbo run build --filter=...[origin/my-feature]
 
# 두 Git SHA 사이의 변경 사항에 의존하는 모든 것을 빌드
turbo run build --filter=[a1b2c3d...e4f5g6h]
 
# 다음과 같은 경우 '@acme/ui'를 빌드:
# - 이전 커밋 이후 이 패키지 또는 그 종속성 중 하나가 변경된 경우
turbo run build --filter=@acme/ui...[HEAD^1]
 
# 다음 각 패키지를 테스트:
# - '@acme' 스코프에 있는 패키지
# - 또는 'packages' 디렉토리에 있는 패키지
# - 또는 이전 커밋 이후 변경된 패키지
turbo run test --filter=@acme/*{./packages/*}[HEAD^1]

--force

기존 캐시된 아티팩트를 무시하고 모든 작업을 다시 실행합니다.

Good to know: 

--force는 기존 작업 캐시를 덮어씁니다.
Terminal
turbo run build --force

동일한 동작은 TURBO_FORCE 환경 변수를 통해서도 설정할 수 있습니다.

--framework-inference

기본값: true

작업에 대해 프레임워크 추론을 수행할지 여부를 지정합니다.

false일 때 자동 환경 변수 포함이 비활성화됩니다.

Terminal
turbo run build --framework-inference=false

--global-deps <file glob>

해시화할 전역 파일 시스템 종속성의 glob을 지정합니다. 여러 패키지에 영향을 미치는 .env 및 루트 디렉토리의 파일에 유용합니다.

Terminal
turbo run build --global-deps=".env"
turbo run build --global-deps=".env.*" --global-deps=".eslintrc" --global-deps="jest.config.ts"

항상 고려되도록 하기 위해 turbo.jsonglobalDependencies에 해시에 포함하려는 파일 glob을 지정하는 것을 권장합니다.

--graph <file name>

기본값: dot

이 명령은 그래프 파일을 출력할 수 있습니다: svg, png, jpg, pdf, json, html, mermaid 또는 dot.

Graphviz가 설치되지 않았거나 파일 이름이 제공되지 않으면 이 명령은 dot 그래프를 stdout에 출력합니다.

Terminal
turbo run build --graph
turbo run build test lint --graph=my-graph.svg

알려진 버그: 현재 특정 패키지에 해당 스크립트가 실제로 존재하지 않더라도 모든 가능한 작업 노드가 그래프에 추가됩니다. 이는 실행에는 영향을 미치지 않지만 그래프가 관련된 패키지와 작업의 수를 과대평가할 수 있습니다.

--log-order <option>

기본값: auto

로그 출력의 순서를 설정합니다.

기본적으로 turbo는 CI 환경에서 grouped 로그를, 다른 곳에서는 stream 로그를 사용합니다. 이 플래그는 터미널 UI를 사용할 때는 적용되지 않습니다.

Terminal
turbo run build --log-order=stream
옵션설명
stream사용 가능한 즉시 출력을 표시합니다
grouped작업별로 출력을 그룹화합니다
autoturbo가 자체 휴리스틱을 기반으로 결정합니다

--log-prefix <option>

기본값: auto

작업 실행 시 생성되는 로그 라인의 <package>:<task>: 접두사를 제어합니다.

Terminal
turbo run dev --log-prefix=none
옵션설명
task로그에 <package>:<task>: 접두사를 강제로 추가합니다
none접두사 없음
autoturbo가 자체 휴리스틱을 기반으로 결정합니다

--no-cache

사용 중단됨

이 플래그는 향후 주요 릴리스에서 제거될 예정입니다. 대신 --cache 플래그를 사용하세요.

기본값: false

작업의 결과를 캐시하지 않습니다.

Terminal
turbo run dev --no-cache

--daemon--no-daemon

turbo는 수행해야 할 작업을 결정하는 데 사용되는 값을 사전 계산하기 위해 백그라운드 프로세스를 실행할 수 있습니다. 이 독립 실행형 프로세스(daemon)는 최적화이며 turbo의 적절한 기능에는 필요하지 않습니다.

기본 daemon 사용은 turbo.jsondaemon 필드를 사용하여 저장소에 대해 설정됩니다. --daemon을 전달하면 turbo가 독립 실행형 프로세스를 사용해야 하며, --no-daemonturbo가 독립 실행형 프로세스를 사용하거나 생성하지 않도록 지시합니다.

동일한 동작은 TURBO_DAEMON=true 시스템 변수를 통해서도 설정할 수 있습니다.

--output-logs <option>

기본값: full

출력 로깅 유형을 설정하며, turbo.json에 정의된 경우 outputLogs를 재정의합니다.

Terminal
turbo run build --output-logs=errors-only
옵션설명
full모든 로그를 표시합니다
hash-only작업의 해시만 표시합니다
new-only캐시 미스의 로그만 표시합니다
errors-only작업 실패의 로그만 표시합니다
none모든 작업 로그를 숨깁니다

--only

기본값: false

실행을 지정된 작업만 포함하도록 제한합니다.

예시

다음 turbo.json이 주어졌을 때:

Turborepo logo
./turbo.json
{
  "$schema": "https://turborepo.com/schema.json",
  "tasks": {
    "build": {
      "dependsOn": ["^build"]
    },
    "test": {
      "dependsOn": ["^build"]
    }
  }
}
Terminal
turbo run test --only

이 명령은 각 패키지의 test 작업만 실행합니다. build는 실행하지 않습니다.

또한 --only는 종속성을 제외하고 지정된 패키지의 작업만 실행합니다. 예를 들어, turbo run build --filter=web --onlyweb 패키지의 build 스크립트만 실행합니다.

--parallel

기본값: false

작업 종속성 그래프를 무시하고 패키지 간에 명령을 병렬로 실행합니다.

Terminal
turbo run lint --parallel
turbo run dev --parallel

--parallel 플래그는 일반적으로 종료되지 않는 장기 실행 "dev" 또는 "watch" 작업에 사용됩니다. turbo@1.7부터는 대신 persistent를 사용하여 이러한 작업을 구성하는 것을 권장합니다.

--preflight

Remote Caching이 구성된 경우에만 적용됩니다. 모든 캐시 아티팩트 및 분석 요청 전에 preflight 요청 전송을 활성화합니다. 후속 업로드 및 다운로드는 리디렉션을 따릅니다.

Terminal
turbo run build --preflight

동일한 동작은 TURBO_PREFLIGHT=true 시스템 변수를 통해서도 설정할 수 있습니다.

--profile

성능 분석에 사용할 수 있는 Chrome Tracing 형식의 실행 추적을 생성합니다.

추적을 생성하려면 --profile과 함께 자세한 정도 플래그(-v, -vv 또는 -vvv)를 제공해야 합니다.

Terminal
turbo run build --profile=profile.json -vvv

프로필은 Perfetto와 같은 도구에서 볼 수 있습니다.

--remote-cache-timeout

기본값: 30

Remote Cache 작업의 타임아웃을 초 단위로 설정합니다.

Terminal
turbo run build --remote-cache-timeout=60

--remote-only

사용 중단됨

이 플래그는 향후 주요 릴리스에서 제거될 예정입니다. 대신 --cache 플래그를 사용하세요.

기본값: false

모든 작업에 대해 로컬 파일 시스템 캐시를 무시하고 Remote Cache를 사용하여 작업 출력을 읽고 캐싱합니다.

Terminal
turbo run build --remote-only

--summarize

다음을 포함하여 실행에 대한 메타데이터가 포함된 JSON 파일을 .turbo/runs에 생성합니다:

  • 영향을 받은 패키지
  • 실행된 작업(타이밍 및 해시 포함)
  • 캐시된 아티팩트에 포함된 모든 파일
Terminal
turbo run build --summarize

이 플래그는 다음과 같은 항목을 확인하기 위한 디버깅에 유용할 수 있습니다:

  • turboinputsoutputs에 대한 glob 구문을 해석한 방법
  • 캐시 미스를 발생시키기 위해 두 작업 실행 사이에 변경된 입력
  • 시간이 지남에 따라 작업 타이밍이 어떻게 변경되었는지

요약 뷰어

Turborepo 네이티브 실행 요약 UI 뷰어는 없지만, 실행 요약을 웹 뷰로 보려면 커뮤니티에서 만든 https://turbo.nullvoxpopuli.com을 사용하는 것을 권장합니다.

--token

Remote Caching을 위한 bearer 토큰입니다. --team 플래그와 함께 비대화형 셸에서 실행할 때 유용합니다.

Terminal
turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx

이 값은 TURBO_TOKEN 시스템 변수를 사용하여 설정할 수도 있습니다. 둘 다 있는 경우 플래그 값이 시스템 변수를 재정의합니다.

Good to know: 

Vercel Remote Cache를 사용하고 Vercel에서 프로젝트를 빌드하는 경우 이 플래그를 사용할 필요가 없습니다. 이 값은 자동으로 설정됩니다.

--team

Remote Cache 팀의 슬러그입니다. --token 플래그와 함께 비대화형 셸에서 실행할 때 유용합니다.

Terminal
turbo run build --team=my-team
turbo run build --team=my-team --token=xxxxxxxxxxxxxxxxx

이 값은 TURBO_TEAM 시스템 변수를 사용하여 설정할 수도 있습니다. 둘 다 있는 경우 플래그 값이 시스템 변수를 재정의합니다.

--ui

출력에 사용할 UI를 지정합니다. stream 또는 tui를 허용합니다.

--verbosity

로그 레벨을 지정하려면 --verbosity=<num> 또는 -v, -vv, -vvv를 사용합니다.

레벨플래그 값단축형
Info--verbosity=1-v
Debug--verbosity=2-vv
Trace--verbosity=3-vvv
Terminal
turbo run build --verbosity=2
turbo run build -vvv