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:.*/"
詳細
pnpm run
は scripts
を実行する際に、シェルの既存の PATH
に node_modules/.bin
を追加します。 つまり、パッケージがインストールされていれば、それをスクリプト内で通常のコマンドのように使えます。 例えば、 eslint
がインストールされている場合、次のようにスクリプトを書けます。
"lint": "eslint src --fix"
これは eslint
がシェルにグローバルにインストールされていなくても実行されます。
ワークスペースの場合は、<workspace root>/node_modules/.bin
も PATH
に追加されるため、ツールがワークスペースのルートにインストールされている場合、任意のワークスペースパッケージの scripts
から呼び出せます。
環境変数
実行されたスクリプトに対して、 pnpm が自動的に作成する環境変数があります。 これらの環境変数を使用して、実行中のプロセスに関するコンテキスト情報を取得できます。
pnpm によって作成される環境変数は次のとおりです。
- npm_command - 実行されたコマンドの名前が含まれています。 実行されたコマンドが
pnpm run
の場合、この変数の値は "run-script" になります。
Options
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
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
並行性とトポロジカルソートの結果を完全に無視して、マッチする全てのパッケージに対して指定されたスクリプトを即時実行し、接頭辞付きのストリームで出力します。 このフラグは、多くのパッケージで長時間実行される処理、例えば、長時間のビルド処理に適しています。