--filter (또는 -F) 플래그는 모노레포에서 패턴으로 패키지를 선택할 때 사용됩니다. 패턴은 전체 glob 문법 지원을 사용하여 패키지 이름이나 패키지 경로와 일치시킬 수 있습니다.
현재 --filter 는 bun install 및 bun outdated 에서 지원되며, 한 번에 여러 패키지의 스크립트를 실행하는 데에도 사용할 수 있습니다.
매칭
패키지 이름 --filter <pattern>
이름 패턴은 package.json 에 지정된 패키지 이름을 기준으로 패키지를 선택합니다. 예를 들어 pkg-a, pkg-b, other 라는 패키지가 있는 경우 * 로 모든 패키지를 매칭하거나 pkg* 로 pkg-a 와 pkg-b 만 매칭하거나, 패키지 전체 이름을 제공하여 특정 패키지를 매칭할 수 있습니다.
패키지 경로 --filter ./<glob>
경로 패턴은 패턴을 ./ 로 시작하여 지정하며, 패턴과 일치하는 디렉토리의 모든 패키지를 선택합니다. 예를 들어 packages 의 하위 디렉토리에 있는 모든 패키지를 매칭하려면 --filter './packages/**' 를 사용할 수 있습니다. packages/foo 에 위치한 패키지를 매칭하려면 --filter ./packages/foo 를 사용합니다.
bun install 및 bun outdated
bun install 과 bun outdated 는 모두 --filter 플래그를 지원합니다.
bun install 은 기본적으로 모노레포의 모든 패키지에 대한 의존성을 설치합니다. 특정 패키지에 대한 의존성을 설치하려면 --filter 를 사용합니다.
./packages 아래에 워크스페이스 pkg-a, pkg-b, pkg-c 가 있는 모노레포가 있다고 가정합니다.
# `pkg-c` 를 제외한 모든 워크스페이스의 의존성 설치
bun install --filter '!pkg-c'
# `./packages` 의 패키지 의존성 설치 (`pkg-a`, `pkg-b`, `pkg-c`)
bun install --filter './packages/*'
# 위와 동일하지만 루트 package.json 제외
bun install --filter '!./' --filter './packages/*'마찬가지로 bun outdated 는 모노레포의 모든 패키지에 대한 오래된 의존성을 표시하며, --filter 를 사용하여 패키지의 하위 집합으로 명령을 제한할 수 있습니다.
# `pkg-` 로 시작하는 워크스페이스의 오래된 의존성 표시
bun outdated --filter 'pkg-*'
# 루트 package.json 의 오래된 의존성만 표시
bun outdated --filter './'이러한 각 명령에 대한 자세한 내용은 bun install 및 bun outdated 를 참조하세요.
--filter 로 스크립트 실행
--filter 플래그를 사용하여 여러 패키지에서 한 번에 스크립트를 실행합니다.
bun --filter <pattern> <script>packages/api 와 packages/frontend 두 패키지가 있고 각각 로컬 개발 서버를 시작하는 dev 스크립트가 있는 모노레포가 있다고 가정합니다. 일반적으로는 별도의 터미널 탭을 두 개 열고 각 패키지 디렉토리로 cd 한 후 bun dev 를 실행해야 합니다.
cd packages/api
bun dev
# 다른 터미널에서
cd packages/frontend
bun dev--filter 를 사용하면 두 패키지에서 동시에 dev 스크립트를 실행할 수 있습니다.
bun --filter '*' dev두 명령이 병렬로 실행되며 각각의 출력을 보여주는 깔끔한 터미널 UI 가 표시됩니다.
워크스페이스에서 스크립트 실행
필터는 워크스페이스 구성 을 따릅니다. 워크스페이스의 일부인 패키지를 지정하는 package.json 파일이 있는 경우 --filter 는 이러한 패키지로만 제한됩니다. 또한 워크스페이스에서는 --filter 를 사용하여 워크스페이스 어디에 있는 패키지에서든 스크립트를 실행할 수 있습니다.
# 패키지
# src/foo
# src/bar
# src/bar 에서: src/foo 에서 myscript 실행, cd 불필요!
bun run --filter foo myscript의존성 순서
Bun 은 스크립트를 실행할 때 의존성 순서를 따릅니다. 워크스페이스에서 패키지 foo 가 다른 패키지 bar 에 의존하고 두 패키지 모두 build 스크립트가 있다고 가정합니다. bun --filter '*' build 를 실행하면 foo 는 bar 가 완료된 후에만 실행되기 시작하는 것을 확인할 수 있습니다.