Pular para o conte√ļdo principal
Vers√£o: 6.x

pnpm run

Aliases: run-script

Executa um script definido no arquivo de manifesto do pacote.

Exemplos‚Äč

Digamos que você tenha um script watch configurado em seu package.json, da seguinte forma:

"scripts": {
"watch": "build-command --watch"
}

Agora você pode executar esse script usando pnpm run watch! Simples, certo? Outra coisa a notar para aqueles que gostam de economizar teclas e tempo é que todos os scripts possuem um alias de comando pnpm, por isso, no fim das contas, pnpm watch é apenas uma abreviação para pnpm run watch (SOMENTE para scripts que não compartilham o mesmo nome de comandos existentes do pnpm).

Detalhes‚Äč

Além do PATHpré-existente do shell, pnpm run inclui node_modules/.bin no PATH fornecido para os scripts. Isso significa que, desde que você tenha um pacote instalado, você pode usá-lo em um script como um comando comum. Por exemplo, se você tem o eslint instalado, você pode escrever um script assim:

"lint": "eslint src --fix"

E mesmo que eslint n√£o esteja instalado globalmente em seu shell, ele ser√° executado.

For workspaces, as of v3.5, <workspace root>/node_modules/.bin is also added to the PATH, so if a tool is installed in the workspace root, it may be called in any workspace package's scripts.

Diferen√ßas com npm run‚Äč

Por padr√£o, o pnpm n√£o executa hooks arbitr√°rios pre e post para scripts definidos pelo usu√°rio (como prestart). Esse comportamento, herdado do npm, fazia com que os scripts fossem impl√≠citos em vez de expl√≠citos, ofuscando o fluxo de execu√ß√£o. Tamb√©m levou a execu√ß√Ķes surpreendentes com pnpm serve tamb√©m executando pnpm preserve.

Se por algum motivo você precisar do comportamento pré/pós scripts do npm, use a opção enable-pre-post-scripts.

Op√ß√Ķes‚Äč

script-shell‚Äč

Added in: v5.10.0

  • Padr√£o: null
  • Tipo: caminho

The shell to use for scripts run with the pnpm run command.

For instance, to force usage of Git Bash on Windows:

pnpm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"

shell-emulator‚Äč

Added in: v5.8.0

  • Padr√£o: low
  • Tipo: Boolean

When true, pnpm will use a JavaScript implementation of a bash-like shell to execute scripts.

This option simplifies cross-platform scripting. For instance, by default, the next script will fail on non-POSIX-compliant systems:

"scripts": {
"test": "NODE_ENV=test node test.js"
}

But if the shell-emulator setting is set to true, it will work on all platforms.

--recursive, -r‚Äč

This runs an arbitrary command from each package's "scripts" object. If a package doesn't have the command, it is skipped. If none of the packages have the command, the command fails.

--if-present‚Äč

Added in: v4.5.0

You can use the --if-present flag to avoid exiting with a non-zero exit code when the script is undefined. This lets you run potentially undefined scripts without breaking the execution chain.

--parallel‚Äč

Added in: v5.1.0

Completely disregard concurrency and topological sorting, running a given script immediately in all matching packages with prefixed streaming output. This is the preferred flag for long-running processes over many packages, for instance, a lengthy build process.

--stream‚Äč

Added in: v5.1.0

Stream output from child processes immediately, prefixed with the originating package directory. This allows output from different packages to be interleaved.

--aggregate-output‚Äč

Added in: v6.24.0

Aggregate output from child processes that are run in parallel, and only print output when the child process is finished. It makes reading large logs after running pnpm -r <command> with --parallel or with --workspace-concurrency=<number> much easier (especially on CI). Only --reporter=append-only is supported.

enable-pre-post-scripts‚Äč

Added in: v6.1.0

  • Padr√£o: low
  • Tipo: Boolean

When true, pnpm will run any pre/post scripts automatically. So running pnpm foo will be like running pnpm prefoo && pnpm foo && pnpm postfoo.

--filter <package_selector>‚Äč

Leia mais sobre filtragem.