Skip to main content
Version: 5.x

フィルタリング

追加されたバージョン:v2.13.0

フィルタリングを使用すると、コマンドをの特定の一部のパッケージに制限できます。

pnpm はパッケージを名前またはリレーションで選択するための豊富なセレクタ構文をサポートしています。

セレクターは --filter フラグで指定できます:

pnpm <command> --filter <package_selector>

--filter <package_name>

追加されたバージョン:v2.13.0

完全に一致するパッケージを選択するには、その名前 (@scope/pkg) を指定してください。 もしくは、パターンを使用してパッケージすべてを選択できます (@scope/*) 。

Examples:

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

--filter <package_name>...

追加されたバージョン:v2.13.0

パッケージとその (直接および間接の) 依存関係を選択するには、パッケージ名の末尾に三点リーダーを付けます: <package_name>...。 例えば次のコマンドは、 foo とそのすべての依存関係をテストします。

pnpm test --filter foo...

パターンを使用してルートパッケージを指定することもできます。

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

--filter <package_name>^...

追加されたバージョン:v4.4.0

ルートパッケージを除いた、パッケージの (直接と間接の両方の) 依存関係のみを選択するには、パッケージ名の後ろ、前述の三点リーダの前にキャレットを付与します。 例えば次のコマンドは、 foo 自身を除いたすべての foo 依存関係についてテストを実行します。

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

--filter ...<package_name>

Added in: v2.14.0

パッケージとその (直接および間接の) 依存を選択するには、パッケージ名の前に三点リーダーを付与します。 ...<package_name>。 例えば次のコマンドは、 foo とそれに依存するすべてのパッケージのテストを実行します。

pnpm test --filter ...foo

--filter "...^<package_name>"

追加されたバージョン:v4.4.0

パッケージの (直接および間接の) 依存のみを選択するには、パッケージ名の前に三点リーダーとそれに続くキャレットを付けます。 例えば次のコマンドは、 foo 自身を除いたすべての foo に依存するパッケージのテストを実行します。

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

--filter ./<directory>

追加されたバージョン:v2.15.0

To only select packages under the specified directory, you may specify any absolute path, typically in POSIX format.

--filter {<directory>}

Added in: v4.7.0

指定したディレクトリの下にあるすべてのプロジェクトを含めます。

これは、三点リーダーおよびキャレット演算子とともに使用して、依存 / 被依存関係を指定することができます。

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

また、 [<since>] と組み合わせて使用することもできます。 たとえば、ディレクトリ内の変更のあったプロジェクトのみをすべて選択するには、次のようにします。

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

また、指定されたパターンに一致する名前を持つディレクトリからすべてのパッケージを選択することもできます。

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

--filter "[<since>]"

追加されたバージョン:v4.6.0

指定されたコミット / ブランチ以降に変更されたすべてのパッケージを選択します。 依存 / 被依存関係を含めるために、... 接頭辞 / 接尾辞を付けることができます。

例えば、次のコマンドは、master 以降のすべての変更されたパッケージとその依存パッケージでテストを実行します。

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

複数のフィルターを指定する

フィルタリングをする際は、少なくとも 1 つのフィルターに一致するすべてのパッケージが取得されます。 必要な数だけフィルターを使用できます。

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

除外

Added in: v5.8.0

いずれのフィルタセレクタも、先頭に "!" がある場合は除外演算子として機能します。 zsh(およびおそらく他のシェル)では、"!" はエスケープする必要があります: \!

次の例は、 foo を除くすべてのプロジェクトでコマンドが実行されます。

pnpm <cmd> --filter=!foo

そして、次の例は lib ディレクトリの下にないすべてのプロジェクトでコマンドを実行します:

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

--test-pattern <glob>

Added in: v5.14.0

test-pattern allows detecting whether the modified files are related to tests. If they are, the dependent packages of such modified packages are not included.

This option is useful with the "changed since" filter. For instance, the next command will run tests in all changed packages, and if the changes are in the source code of the package, tests will run in the dependent packages as well:

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