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?

npm と npx、pnpm と pnpm dlx の違いをサクッと理解する

Posted at

npm install vs npx vs pnpm vs pnpm dlx の使い分け完全ガイド

nextプロジェクトを導入するときなどに使っていたnpxについて調べてみたのでここに残します!
自分はpnpmをよく使うので、npxのpnpm版である、pnpm dlxについても書きます!

TL;DR → "インストールして使う"のが npm/pnpm、"その場だけ借りて実行"するのが npx/pnpm dlx

使い分け早見表

目的 npm npx pnpm pnpm dlx
パッケージ管理(入れる/更新/消す) × ×
プロジェクトに入っている bin を実行 npm run / npm exec (基本使わない) pnpm run / pnpm exec (基本使わない)
未インストールの CLI を一時的に実行 × ×
代表例 npm i axios npx create-next-app pnpm add axios pnpm dlx create-next-app

1. npm / npx とは?

npm:パッケージマネージャ(管理役)

プロジェクトにパッケージをインストールして管理する

よく使うコマンド

npm install react
npm run build
npm exec eslint .

npx:パッケージランナー(実行役)

プロジェクトに入ってるツールも実行できるし、無ければその場でダウンロードして実行もできる

代表例(雛形生成など "たまに使う系")

npx create-next-app@latest my-app
npx @nestjs/cli new backend

補足: npm v7 以降、npx は内部的に npm exec を使います。用途は "未インストール CLI を一時実行" で覚えればOK。

2. pnpm / pnpm dlx とは?

pnpm:代替パッケージマネージャ(高速&ディスク節約)

ハードリンクとグローバルストアを使って、高速でディスク容量を節約してインストール

よく使うコマンド

pnpm add react
pnpm run dev
pnpm exec eslint .

pnpm dlx:pnpm 版の一時実行(= npx 相当)

npx と同じ用途。未インストールの CLI を一時的にダウンロードして実行

グローバルストアを利用するので、2回目以降の実行が速い

pnpm dlx create-next-app@latest my-app
pnpm dlx @nestjs/cli new backend

3. これさえ覚えれば困らない"対応表"

やりたいこと npm 系 pnpm 系
ライブラリをプロジェクトに入れて使う npm install <pkg> pnpm add <pkg>
package.json の scripts を実行 npm run dev pnpm run dev / pnpm dev
依存に入ってる bin を直接実行 npm exec <bin> pnpm exec <bin>
未インストールの CLI を一度だけ実行 npx <cli> [args] pnpm dlx <cli> [args]

4. 具体例("新規作成"と"既存更新")

新規プロジェクトを作る(=雛形作成ツールを「一時実行」)

npm 派

npx create-next-app@latest frontend

pnpm 派(おすすめ)

pnpm dlx create-next-app@latest frontend

既存プロジェクトの依存を上げる(=管理している依存を更新)

npm 派

npm install next@latest react@latest react-dom@latest

pnpm 派

pnpm up next react react-dom --latest

5. 僕が疑問に思ったこと

Q. npx と npm exec の違いは?

A. 用途が重複する部分がある

  • npm exec: プロジェクトに既にインストールされているパッケージのツールを実行する
  • npx: プロジェクトに入ってるツールも実行できるし、無ければその場でダウンロードして実行もできる

つまり、npx は npm exec の機能も含んでいて、さらに未インストールのCLIツールも実行できる。

使い分けのポイント:

  • npx: 柔軟で便利。新規プロジェクト作成など、たまに使うCLIツールに最適
  • npm exec: 常に依存関係を固定して再現性を保ちたい時に使う

create-next-app のような新規プロジェクト作成ツールを使いたい場合は npx を使います。

Q. pnpm dlx と npx は完全に同じ?

A. 目的は同じ。違いは pnpm のグローバルストアを使う点で、2回目以降の実行が速いことが多い。
例:過去にpnpm dlx create-next-app@latestをしていたら、その次に別のプロジェクトでpnpm dlx create-next-app@latestをした時早い

6. まとめ

  • 管理=npm/pnpm実行=npx/pnpm dlx と覚える
  • 新規作成などのプロジェクト雛形は一時実行(npx / pnpm dlx)
  • 既存プロジェクトでは依存をインストールして scripts で実行(npm run / pnpm run)
  • pnpm を使っている人は pnpm dlx を使う(高速&クリーン)

おまけ:おすすめ運用(pnpm を使っている人向け)

# 1) 新規作成(その場だけツールを借りる)
pnpm dlx create-next-app@latest frontend --ts --tailwind

# 2) 依存はプロジェクトに管理
cd frontend
pnpm add recharts react-hook-form zod

# 3) 実行はスクリプト経由(package.json)
pnpm dev

閲覧ありがとうございました!!

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?