본문으로 건너뛰기
버전: 10.x

필터링

필터링을 사용하면 패키지의 특정 하위 집합으로 명령을 제한할 수 있습니다.

pnpm은 이름 또는 관계로 패키지를 선택하기 위한 다양한 selector 구문을 지원합니다.

Selectors may be specified via the --filter (or -F) flag:

pnpm --filter <package_selector> <command>

매칭

--filter &lt;package_name>

To select an exact package, just specify its name (@scope/pkg) or use a pattern to select a set of packages (@scope/*).

예시:

pnpm --filter "@babel/core" test
pnpm --filter "@babel/*" test
pnpm --filter "*core" test

Specifying the scope of the package is optional, so --filter=core will pick @babel/core if core is not found. However, if the workspace has multiple packages with the same name (for instance, @babel/core and @types/core), then filtering without scope will pick nothing.

--filter &lt;package_name>...

To select a package and its dependencies (direct and non-direct), suffix the package name with an ellipsis: <package_name>.... For instance, the next command will run tests of foo and all of its dependencies:

pnpm --filter foo... test

패턴을 사용하여 루트 패키지 세트를 선택할 수 있습니다.

pnpm --filter "@babel/preset-*..." test

--filter &lt;package_name>^...

패키지의 의존성 (직접 및 비직접) 만 선택하려면, 앞서 언급한 줄임표 앞에 셰브런 (^) 이 붙은 이름 접미사를 붙입니다. For instance, the next command will run tests for all of foo's dependencies:

pnpm --filter "foo^..." test

--filter ...&lt;package_name>

To select a package and its dependent packages (direct and non-direct), prefix the package name with an ellipsis: ...<package_name>. For instance, this will run the tests of foo and all packages dependent on it:

pnpm --filter ...foo test

--filter "...^&lt;package_name>"

패키지의 의존 패키지만을 선택하기 위해 (직접 및 비직접 모두), 셰브런이 뒤에 붙은 줄임표를 접두사로 붙입니다. For instance, this will run tests for all packages dependent on foo:

pnpm --filter "...^foo" test

--filter ./<glob>, --filter {<glob>}

프로젝트에 해당하는 현재 작업 디렉토리와 관련된 glob 패턴입니다.

pnpm --filter "./packages/**" <cmd>

지정된 디렉토리에 있는 모든 프로젝트를 포함합니다.

줄임표 및 셰브런 연산자와 함께 사용하여 의존 패키지 및 의존성을 선택할 수 있습니다.

pnpm --filter ...{<directory>} <cmd>
pnpm --filter {<directory>}... <cmd>
pnpm --filter ...{<directory>}... <cmd>

It may also be combined with [<since>]. 예를 들어, 디렉토리 내에서 변경된 프로젝트를 모두 선택하려면:

pnpm --filter "{packages/**}[origin/master]" <cmd>
pnpm --filter "...{packages/**}[origin/master]" <cmd>
pnpm --filter "{packages/**}[origin/master]..." <cmd>
pnpm --filter "...{packages/**}[origin/master]..." <cmd>

또는 지정된 패턴과 일치하는 이름을 가진 디렉토리에서 모든 패키지를 선택할 수 있습니다.

pnpm --filter "@babel/*{components/**}" <cmd>
pnpm --filter "@babel/*{components/**}[origin/master]" <cmd>
pnpm --filter "...@babel/*{components/**}[origin/master]" <cmd>

--filter "[&lt;since>]"

지정된 커밋/브랜치 이후 변경된 모든 패키지를 선택합니다. May be suffixed or prefixed with ... to include dependencies/dependents.

For example, the next command will run tests in all changed packages since master and on any dependent packages:

pnpm --filter "...[origin/master]" test

--fail-if-no-match

Use this flag if you want the CLI to fail if no packages have matched the filters.

제외하기

필터 셀렉터는 선행으로 "!"를 가질 때 제외 연산자로서 작동할 수 있습니다. In zsh (and possibly other shells), "!" should be escaped: \!.

For instance, this will run a command in all projects except for foo:

pnpm --filter=!foo <cmd>

And this will run a command in all projects that are not under the lib directory:

pnpm --filter=!./lib <cmd>

다중성

패키지가 필터링되면 셀렉터 중 하나 이상과 일치하는 모든 패키지가 사용됩니다. 필터를 원하는 만큼 추가할 수 있습니다.

pnpm --filter ...foo --filter bar --filter baz... test

--filter-prod &lt;filtering_pattern>

Acts the same a --filter but omits devDependencies when selecting dependency projects from the workspace.

--test-pattern &lt;glob>

test-pattern allows detecting whether the modified files are related to tests. 그렇다면 그러한 수정된 패키지의 의존 패키지는 포함되지 않습니다.

이 옵션은 "changed since" 필터와 함께 사용할 때 유용합니다. 예를 들어, 다음 명령어는 변경된 모든 패키지에서 테스트를 실행하고 변경 사항이 패키지의 소스 코드에 있는 경우 테스트는 의존 패키지에서도 실행됩니다.

pnpm --filter="...[origin/master]" --test-pattern="test/*" test

--changed-files-ignore-pattern &lt;glob>

지정된 커밋/브랜치 이후 변경된 프로젝트를 필터링할 때 glob 패턴으로 변경된 파일을 무시할 수 있습니다.

사용 예:

pnpm --filter="...[origin/master]" --changed-files-ignore-pattern="**/README.md" run build