pnpm run
Алиасы: run-script
Запускает скрипт, определенный в файле манифеста пакета.
Примеры
Допустим, у вас есть сценарий watch, настроенный в файле package.json, например:
"scripts": {
    "watch": "webpack --watch"
}
Теперь вы можете запустить этот сценарий с помощью pnpm run watch! Просто, правда? Для тех, кто любит сохранять нажатия клавиш и время, хорошая новость: все сценарии получают алиас в виде команд pnpm, поэтому, в конечном счете, pnpm watch - это всего лишь краткая запись для pnpm run watch (ТОЛЬКО для сценариев, которые не используют то же имя, что и уже существующие команды pnpm).
Running multiple scripts
Added in: v7.27.0
You may run multiple scripts at the same time by using a regex instead of the script name.
pnpm run "/<regex>/"
Run all scripts that start with watch::
pnpm run "/^watch:.*/"
Подробности
В дополнение к уже существующим в окружении PATH, pnpm run содержит node_modules/.bin в PATH, предоставляемом сценариям. Это значит, до тех пор, пока у вас установлен пакет, вы можете использовать его в скрипте, как обычную команду. Например, если у вас установлен eslint, вы можете создать такой сценарий:
"lint": "eslint src --fix"
И, хотя в вашей оболочке не установлен eslint, он будет работать.
Для рабочих областей, <workspace root>/node_modules/.bin также добавляется в PATH, поэтому если инструмент установлен в корне рабочей области, он может называться в сценариях любого пакета.
Отличия от npm run
По умолчанию pnpm не запускает произвольные хуки pre и post для скриптов определенных пользователем (например, prestart). Это поведение, унаследованное от npm, привело к тому, что скрипты были неявными и запутывающими потоками исполнения, вместо того, чтобы вызываться явно. Это также приводило к неожиданному выполнению pnpm serve, также выполняющему pnpm preserve.
Если по каким-то причинам вам понадобится поведение pre/post scripts как в npm, используйте опцию enable-pre-post-scripts.
Окружение
Есть некоторые переменные окружения, которые pnpm автоматически создает для исполняемых сценариев. Эти переменные окружения могут использоваться для получения контекстной информации о запущенном процессе.
Это переменные окружения, созданные pnpm:
- npm_command - содержит имя исполняемой команды. При исполнении команды 
pnpm runзначение этой переменной будет "run-script". 
Опции
Любые параметры команды run должны быть перечислены перед названием сценария. Опции, перечисленные после имени скрипта передаются исполняемому скрипту.
Все они будут запускать pnpm CLI с параметром --silent:
pnpm run --silent watch
pnpm --silent run watch
pnpm --silent watch
Все аргументы после имени команды добавляются в исполняемый сценарий. Так что, если watch запускает webpack --watch, то эта команда:
pnpm run watch --no-color
запустит:
webpack --watch --no-color
script-shell
- Default: null
 - Тип: путь
 
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
- По умолчанию: false
 - Тип: 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
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
Полностью игнорирует параллелизм и топологическую сортировку, запуская заданный скрипт немедленно во всех подходящих пакетах с префиксом потокового вывода. Это предпочтительный флаг для долго выполняющихся процессов над многими пакетами, например, для длительного процесса сборки.
--stream
Stream output from child processes immediately, prefixed with the originating package directory. This allows output from different packages to be interleaved.
--aggregate-output
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
- По умолчанию: false
 - Тип: 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.
--resume-from <package_name>
Added in: v7.22.0
Resume execution from a particular project. This can be useful if you are working with a large workspace and you want to restart a build at a particular project without running through all of the projects that precede it in the build order.
--report-summary
Added in: v7.28.0
Record the result of the scripts executions into a pnpm-exec-summary.json file.
An example of a pnpm-exec-summary.json file:
{
  "executionStatus": {
    "/Users/zoltan/src/pnpm/pnpm/cli/command": {
      "status": "passed",
      "duration": 1861.143042
    },
    "/Users/zoltan/src/pnpm/pnpm/cli/common-cli-options-help": {
      "status": "passed",
      "duration": 1865.914958
    }
  }
Possible values of status are: 'passed', 'queued', 'running'.