0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pnpm execとpnpm dlx

Posted at

よくpnpm execpnpm dlxのどっちがどっちなのか分からなくなるのでまとめる。

pnpm exec

プロジェクト内でnode_modules/.binに置かれたコマンドの実行や、スクリプトの実行を行うコマンド。

# node_modules/.bin/vitestを実行
pnpm exec vitest
# websiteワークスペース内でlsを実行
pnpm -F website exec ls

既存の名前と衝突しなければ、execは省略できる。

# node_modules/.bin/vitestを実行
pnpm vitest
# インストールされたパッケージ一覧が表示される(pnpm exec lsではない)
pnpm ls

pnpm dlx

プロジェクト内の依存関係に関係なく、パッケージをレジストリから取得してデフォルトのコマンドを実行するコマンド。

# storybookの初期化
pnpm dlx storybook@latest init

pnpxpnpm dlxのエイリアスとして使える

pnpx storybook@latest init

このコマンドについて調べているとpnpxが非推奨になったという話題があった。

確かにpnpxv6.13.0時点で非推奨になるv7.0.0で削除される予定だったようだが、v7.0.0ではpnpm dlxの単なるエイリアスとして使えるように変更されていた。
そのためpnpxと代わりに利用することは現在では問題ないと考えている。

特定のワークスペースで実行したい場合は、--filter-Fで指定するのではなく--packageを利用する。

pnpm --package=website dlx storybook@latest upgrade

判別する

pnpmとYarn、npmの比較表pnpm dlxnpxと同列にされていることから、npxと同じように末尾がxで終わるコマンドは、外部パッケージを利用するみたいに覚えると良さそうに感じた。

npxpnpm dlxは「パッケージの直接実行」として同列に挙げられているので、npxはローカルに対象のパッケージがあればそれを参照してコマンドを実行する。

同様にnpm execpnpm execとは動作が異なるので注意すること。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?