Passa al contenuto principale
Version: 5.x

Filtraggio

Aggiunto nella versione: v2.13.0

Il filtraggio consente di limitare i comandi a specifici sottoinsiemi di pacchetti.

pnpm supporta una ricca sintassi di selettori per la selezione dei pacchetti per nome o per relazione.

I selettori possono essere specificati tramite il flag --filter:

pnpm <comando> --filter <selettore_pacchetto>

--filter <nome_pacchetto>#

Aggiunto nella versione: v2.13.0

Per selezionare un pacchetto esatto, è sufficiente specificare il suo nome (@scope/pkg) o utilizzare un modello per selezionare un insieme di pacchetti (@scope/*).

Esempi:

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

--filter <nome_pacchetto>...#

Aggiunto nella versione: v2.13.0

Per selezionare un pacchetto e le sue dipendenze (dirette e non dirette), aggiungi il suffisso del nome del pacchetto con i puntini di sospensione: <package_name>.... Ad esempio, il prossimo comando eseguirà i test di foo e tutte le sue dipendenze:

pnpm test --filter foo...

Puoi usare uno schema per selezionare un set di pacchetti radice:

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

--filter <nome_pacchetto>^...#

Aggiunto nella versione: v4.4.0

Per selezionare SOLO le dipendenze di un pacchetto (sia diretto che non diretto), aggiungi al nome il suffisso con i suddetti puntini di sospensione preceduti da un gallone. Ad esempio, il prossimo comando eseguirà i test per tutte le dipendenze di foo:

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

--filter ...<nome_pacchetto>#

Aggiunto nella versione: v2.14.0

Per selezionare un pacchetto e i suoi pacchetti dipendenti (dirette e non dirette), aggiungi il prefisso del nome del pacchetto con i puntini di sospensione: <package_name>.... Ad esempio, questo eseguirà i test di foo e tutti i pacchetti dipendenti da esso:

pnpm test --filter ...foo

--filter "...^<nome_pacchetto>"#

Aggiunto nella versione: v4.4.0

Per selezionare SOLO i dipendenti di un pacchetto (sia diretti che non diretti), prefissare il nome del pacchetto con un'ellissi seguita da un gallone. Ad esempio, questo eseguirà i test per tutti i pacchetti dipendenti da foo:

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

--filter ./<cartella>#

Aggiunto nella versione: v2.15.0

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

--filter {<cartella>}#

Aggiunto nella versione: v4.7.0

Include tutti i progetti che si trovano nella cartella specificata.

Può essere utilizzato con gli operatori puntini di sospensione e gallone per selezionare anche dipendenti/dipendenze:

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

Può anche essere combinato con [<dopo>]. Ad esempio, per selezionare tutti i progetti modificati all'interno di una cartella:

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

Oppure puoi selezionare tutti i pacchetti da una cartella con nomi che corrispondono al modello:

pnpm <cmd> --filter "@babel/*{componenti}"pnpm <cmd> --filter "@babel/*{componenti}[origine/master]"pnpm <cmd> --filter "[email protected]/*{componenti}[origine/master] "

--filter "[<dopo>]"#

Aggiunto nella versione: v4.6.0

Seleziona tutti i pacchetti modificati dopo il commit/branch specificato. Può avere il suffisso o il prefisso ... per includere dipendenze/dipendenti.

Ad esempio, il comando successivo eseguirà i test in tutti i pacchetti modificati dopo master e su tutti i pacchetti dipendenti:

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

Molteplicità#

Quando i pacchetti vengono filtrati, viene preso ogni pacchetto che corrisponde ad almeno uno dei selettori. Puoi usare tutti i filtri che vuoi:

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

Esclusione#

Added in: v5.8.0

Tutti i selettori di filtro possono funzionare come operatori di esclusione quando hanno uno "!" iniziale. In zsh (e possibilmente in altre shell), dovrebbe essere effettuato l'escaping di "!": \!.

Ad esempio, questo eseguirà un comando in tutti i progetti tranne foo:

pnpm <cmd> --filter=!foo

E questo eseguirà un comando in tutti i progetti che non si trovano nella cartella 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