Filtrage
Le filtrage vous permet de restreindre les commandes à des sous-ensembles spécifiques de packages.
pnpm supporte une syntaxe de sélecteur riche pour choisir les paquets par nom ou par relation.
Selectors may be specified via the--filter
(or-F
) flag:
pnpm --filter <package_selector> <command>
Correspondant
--filter <package_name>
To select an exact package, just specify its name (@scope/pkg
) or use apattern to select a set of packages (@scope/*
).
Exemples :
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
ifcore
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 <package_name>...
To select a package and its dependencies (direct and non-direct), suffix thepackage name with an ellipsis:<package_name>...
. For instance, the nextcommand will run tests offoo
and all of its dependencies:
pnpm --filter foo... test
Vous pouvez utiliser un paterne pour sélectionner un ensemble de packages racine :
pnpm --filter "@babel/preset-*..." test
--filter <package_name>^...
Pour sélectionner UNIQUEMENT les dépendances d'un package (à la fois directes et non directes), suffixez le nom avec les points de suspension susmentionnés précédés d'un chevron. Forinstance, the next command will run tests for all offoo
'sdependencies:
pnpm --filter "foo^..." test
--filter ...<package_name>
To select a package and its dependent packages (direct and non-direct), prefixthe package name with an ellipsis:...<package_name>
. For instance, this willrun the tests offoo
and all packages dependent on it:
pnpm --filter ...foo test
--filter "...^<package_name>"
Pour sélectionner SEULEMENT les dépendants d'un paquet (direct et non-direct), préparez le nom du paquetavec une ellipse suivie d'un chevron. For instance, this willrun tests for all packages dependent onfoo
:
pnpm --filter "...^foo" test
--filter./<glob>
, --filter{<glob>}
Un modèle de glob relatif au répertoire de travail courant correspondant aux projets.
pnpm --filter "./packages/**" <cmd>
Inclut tous les projets qui sont dans le répertoire spécifié.
Il peut également être utilisé avec les opérateurs d'ellipse et chevron pour sélectionnerdépendants/dépendances :
pnpm --filter ...{<directory>} <cmd>
pnpm --filter {<directory>}... <cmd>
pnpm --filter ...{<directory>}... <cmd>
It may also be combined with[<since>]
. Par exemple, pour sélectionner tous les projetsmodifiés dans un répertoire:
pnpm --filter "{packages/**}[origin/master]" <cmd>
pnpm --filter "...{packages/**}[origin/master]" <cmd>
pnpm --filter "{packages/**}[origin/master]..." <cmd>
pnpm --filter "...{packages/**}[origin/master]..." <cmd>
Ou vous pouvez sélectionner tous les packages d'un répertoire avec des noms correspondant au modèledonné :
pnpm --filter "@babel/*{components/**}" <cmd>
pnpm --filter "@babel/*{components/**}[origin/master]" <cmd>
pnpm --filter "...@babel/*{components/**}[origin/master]" <cmd>
--filter "[<since>]"
Sélectionne tous les paquets modifiés depuis le commit ou la branche spécifiés. May besuffixed or prefixed with...
to include dependencies/dependents.
For example, the next command will run tests in all changed packages sincemaster
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.
Excepté
N'importe lequel des sélecteurs de filtres peut fonctionner comme des opérateurs d'exclusion lorsqu'ils ont un« !» en tête. In zsh (and possibly other shells), "!" should be escaped:\!
.
For instance, this will run a command in all projects except forfoo
:
pnpm --filter=!foo <cmd>
And this will run a command in all projects that are not under thelib
directory:
pnpm --filter=!./lib <cmd>
Multiplicité
Lorsque les paquets sont filtrés, chaque paquet est pris qui correspond à au moins un dessélecteurs. Vous pouvez utiliser autant de filtres que vous le souhaitez :
pnpm --filter ...foo --filter bar --filter baz... test
--filter-prod <filtering_pattern>
Acts the same a--filter
but omitsdevDependencies
when selecting dependency projectsfrom the workspace.
--test-pattern <glob>
test-pattern
allows detecting whether the modified files are related to tests.Si tel est le cas, les paquets dépendants de ces paquets modifiés ne sont pas inclus.
Cette option est utile avec le filtre "changed since". Par exemple, la prochaine commandeexécutera des tests dans tous les paquets modifiés, et si les changements sont dans le code sourcedu paquet, les tests s'exécuteront également dans les paquets dépendants :
pnpm --filter="...[origin/master]" --test-pattern="test/*" test
--changed-files-ignore-pattern <glob>
Permet d'ignorer les fichiers modifiés par les motifs de glob lors du filtrage pour les projets modifiés depuis la commit/branche spécifiée.
Exemple d'utilisation:
pnpm --filter="...[origin/master]" --changed-files-ignore-pattern="**/README.md" run build