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 <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 <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
, він працюватиме на всіх платформах.