メインコンテンツにスキップ
バージョン: 9.x

pnpm run

エイリアス: run-script

パッケージのマニフェストファイルで定義されたスクリプトを実行します。

package.jsonで次のようにwatchスクリプトが設定されているとします。

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

これで、pnpm run watchを使用することで、そのスクリプトを実行できます!簡単ですよね?キーストロークと時間を節約したい方のために、すべてのスクリプトはpnpmコマンドとしてエイリアスが設定されることに注意してください。したがって、最終的にpnpm watchpnpm run watchの省略形です(既存のpnpmコマンドと同じ名前を共有しないスクリプトの場合のみ)。

複数のスクリプトの実行

スクリプト名の代わりに正規表現を使用すると、複数のスクリプトを同時に実行できます。

pnpm run "/<regex>/"

watch:で始まるすべてのスクリプトを実行します

pnpm run "/^watch:.*/"

詳細

シェルの既存のPATHに加えて、pnpm runscriptsに提供されるPATHnode_modules/.binを含めます。これは、パッケージがインストールされている限り、通常のコマンドのようにスクリプトで使用できることを意味します。たとえば、eslintがインストールされている場合は、次のようなスクリプトを作成できます。

"lint": "eslint src --fix"

そして、eslintがシェルにグローバルにインストールされていなくても、実行されます。

ワークスペースの場合、<ワークスペースルート>/node_modules/.binPATHに追加されるため、ツールがワークスペースルートにインストールされている場合は、任意のワークスペースパッケージのscriptsで呼び出すことができます。

環境

pnpmが実行されるスクリプトのために自動的に作成するいくつかの環境変数があります。これらの環境変数を使用すると、実行中のプロセスに関するコンテキスト情報を取得できます。

これらはpnpmによって作成される環境変数です

  • npm_command - 実行されたコマンドの名前が含まれます。実行されたコマンドがpnpm runの場合、この変数の値は "run-script" になります。

オプション

runコマンドのオプションは、スクリプト名の前にリストする必要があります。スクリプト名の後にリストされたオプションは、実行されたスクリプトに渡されます。

これらはすべて--silentオプションを指定してpnpm CLIを実行します

pnpm run --silent watch
pnpm --silent run watch
pnpm --silent watch

コマンド名の後の引数はすべて、実行されたスクリプトに追加されます。したがって、watchwebpack --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のアノテーション)。--reporter=append-onlyのみがサポートされています。

--filter <package_selector>

フィルタリングについて詳しくは、こちらをご覧ください。

.npmrcの設定

enable-pre-post-scripts

  • デフォルト: true
  • 型: Boolean

trueの場合、pnpmは任意のpre/postスクリプトを自動的に実行します。したがって、pnpm fooを実行すると、pnpm prefoo && pnpm foo && pnpm postfooを実行するようになります。

script-shell

  • デフォルト: null
  • 型: path

pnpm runコマンドで実行するスクリプトに使用するシェル。

たとえば、WindowsでGit Bashの使用を強制するには

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

shell-emulator

  • デフォルト: false
  • 型: Boolean

trueの場合、pnpmはスクリプトを実行するためにbashのようなシェルのJavaScript実装を使用します。

このオプションは、クロスプラットフォームスクリプトを簡素化します。たとえば、デフォルトでは、次のスクリプトはPOSIX準拠でないシステムでは失敗します。

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

ただし、shell-emulator設定がtrueに設定されている場合は、すべてのプラットフォームで機能します。