Перейти до основного змісту
Версія: 10.x

pnpm run

Псевдоніми: run-script

Запускає сценарій, визначений у файлі маніфесту пакунка.

Приклади

Припустімо, у вашому package.json налаштовано сценарій watch, наприклад:

"scripts": {
"watch": "webpack --watch"
}

Тепер ви можете запустити скрипт за допомогою pnpm run watch! Просто, чи не так? Ще одна річ, на яку слід звернути увагу тим, хто любить економити натискання клавіш і час: усі скрипти отримують псевдо як команди pnpm, тож, зрештою, pnpm watch — це просто скорочення для pnpm run watch (ТІЛЬКИ для скриптів, які не мають однакового імені з уже наявними командами pnpm).

Запуск кількох сценаріїв

Ви можете запускати кілька сценаріїв одночасно, використовуючи регулярний вираз замість назви сценарію.

pnpm run "/<regex>/"

Запустить усі сценарії, які починаються з watch::

pnpm run "/^watch:.*/"

Деталі

На додаток до вже наявного PATH оболонки, pnpm run включає node_modules/.bin до PATH, наданого для scripts. Це означає, що якщо у вас встановлено пакунок, ви можете використовувати його у скрипті як звичайну команду. Наприклад, якщо у вас встановлено eslint, ви можете написати такий скрипт:

"lint": "eslint src --fix"

І навіть якщо eslint не встановлено глобально у вашій оболонці, він працюватиме.

Для робочих просторів, <workspace root>/node_modules/.bin також додається до PATH, тому якщо інструмент встановлено у корені робочого простору, його можна викликати у 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

--recursive, -r

Це запускає будь-яку команду з обʼєкта "scripts" кожного пакунка. Якщо пакунок не має команди, він пропускається. Якщо жоден з пакунків не має команди, команда не буде виконана.

--if-present

Ви можете використовувати прапорець --if-present, щоб уникнути виходу з ненульовим кодом завершення коли скрипт не визначено. Це дозволяє запускати потенційно невизначені скрипти без переривання ланцюжка виконання.

--parallel

Повністю ігнорувати паралелізм і топологічне сортування, запускаючи заданий скрипт одразу в усіх пакунках з префіксованим потоковим виводом. Цей прапорець бажано встановлювати для довготривалих процесів з багатьма пакунками, наприклад, для тривалого процесу збирання.

--stream

Транслювати вивід з дочірніх процесів негайно з префіксом початкової теки пакунка. Це дозволяє чергувати вивід з різних пакунків.

--aggregate-output

Обʼєднувати вивід з дочірніх процесів, які виконуються паралельно, і виводити вивід лише після завершення дочірнього процесу. Це значно полегшує читання великих журналів після запуску pnpm -r <command> з --parallel або з --workspace-concurrency=<number> (особливо в CI). Підтримується лише --reporter=append-only.

--resume-from &lt;package_name>

Поновити виконання з конкретного проєкту. Це може бути корисним, якщо ви працюєте з великим робочим простором і бажаєте перезапустити збірку з певного проєкту без проходження всіх проєктів які йому передують у процесі збирання.

--report-summary

Записати результат виконання скриптів у файл pnpm-exec-summary.json.

Приклад файлу pnpm-exec-summary.json:

{
"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
}
}

Можливі значення status такі: 'passed', 'queued', 'running'.

--reporter-hide-prefix

Приховати префікс робочого простору від виводу дочірніх процесів, що виконуються паралельно, і виводити тільки необроблений вивід. Це може бути корисно, якщо ви працюєте з CI, і вивід має бути у певному форматі без будь-яких префіксів (наприклад, GitHub Actions annotations). Підтримується лише --reporter=append-only.

--filter &lt;package_selector>

Читайте більше про фільтрування.

Параметри .npmrc

enable-pre-post-scripts

  • Стандартно: true
  • Тип: Boolean

Якщо true, pnpm автоматично виконуватиме будь-які пре/пост-скрипти. Отже, виконання pnpm foo буде подібне до виконання pnpm prefoo && pnpm foo && pnpm postfoo.

script-shell

  • Стандартно: null
  • Тип: path

Оболонка для запуску скриптів за допомогою команди pnpm run.

Наприклад, щоб примусово використовувати Git Bash у Windows:

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

shell-emulator

  • Стандартно: false
  • Тип: Boolean

Якщо true, pnpm використовуватиме JavaScript-реалізацію bash-подібної оболонки для виконання скриптів.

Цей параметр спрощує написання крос-платформних скриптів. Наприклад, стандартно наступний скрипт не працюватиме в системах, не сумісних з POSIX:

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

Але якщо для параметра shell-emulator встановлено значення true, він працюватиме на всіх платформах.