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まとめ

Posted at

pnpmまとめ

1. pnpmとは?

pnpm(Performant npm) は、Node.jsのパッケージマネージャーの一つです。
npmやyarnと同じ「依存関係管理ツール」ですが、圧倒的に速く、ディスク使用量が少ないのが特徴です。

  • ディスクの無駄を極限まで減らす設計
  • 特にモノレポ(複数パッケージ管理)で真価を発揮!

公式サイト: https://pnpm.io/


2. npm/yarnとの違い

npm yarn pnpm
ファイル構造 フラット (node_modulesに全コピー) フラット ハードリンク(参照だけ作成)
速度 普通 速い 超速い
ディスク容量 大きくなりがち 中くらい 圧倒的に少ない
モノレポ対応 手動で設定 yarn workspaces pnpm workspaces標準
キャッシュ 少なめ 多い 極限まで効率化

特に注目なのが、pnpmのハードリンク構造です。
これにより、同じライブラリを何回インストールしても、実際にはディスクに1回しか保存されないため、ディスク使用量が爆減します。


3. 基本的な使い方

インストール

まずpnpm自体をインストールします。

npm install -g pnpm

(またはcorepackを使う場合 → Node.js 16.13以降推奨)

corepack enable
corepack prepare pnpm@latest --activate

プロジェクト作成・依存追加

pnpm init
pnpm add react react-dom

開発依存を追加

pnpm add -D typescript

スクリプト実行

npmと同じく、package.jsonscriptsを叩けます。

pnpm run build

4. よく使うコマンドまとめ

操作 コマンド
依存インストール pnpm install
パッケージ追加 pnpm add パッケージ名
開発用パッケージ pnpm add -D パッケージ名
パッケージ削除 pnpm remove パッケージ名
全削除(初期化) pnpm install --force

5. 【発展】pnpm workspace活用術

pnpmの真骨頂はモノレポ対応です。

例えば、以下のような構成を簡単に管理できます。

my-monorepo/
├── apps/
│   ├── app1/
│   └── app2/
└── packages/
    ├── ui/
    └── utils/

設定ファイル例:pnpm-workspace.yaml

packages:
  - 'apps/*'
  - 'packages/*'

これで、複数プロジェクトをまとめて管理・ビルド・依存共有できます。

ワークスペース内リンクも自動で作ってくれるため、開発スピードが爆速に!


6. 【発展】pnpm hooksによる自動化

pnpmにはインストール時に自動処理できるhooks機能があります。
たとえば、パッケージインストール直後に特定のスクリプトを走らせるなどが可能。

例:pnpmfile.cjsに定義

module.exports = {
  hooks: {
    readPackage(packageJson) {
      if (packageJson.name === "some-package") {
        packageJson.dependencies["lodash"] = "^4.17.21"
      }
      return packageJson
    }
  }
}

これでインストール時に自動で依存を追加したり、バージョン調整を強制できます。
大規模開発では超便利!


7. まとめ

  • pnpmは速い・軽い・賢いパッケージマネージャー
  • npm/yarnとほぼ互換だけど、構造が違う
  • 特にモノレポ・大規模開発に強い
  • workspaceとhooksを使いこなすとさらに便利

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?