編集の要約なし
 
(同じ利用者による、間の7版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
Yarnは、Facebookによってリリースされた新しいJavaScriptパッケージインストーラーおよび依存関係マネージャーである。<br>
Yarnは、Facebookによって開発されたパッケージマネージャーであり、npmの代替として高速なインストールと信頼性の高い依存関係管理を提供する。<br>
Yarnを使用すると、Webプロジェクトに必要なライブラリの依存関係の問題が解決される。<br>
Yarn Classicは安定性を重視する場合に適しており、Yarn Berryは最新の機能とパフォーマンスを求める場合に適している。<br>
また、YarnはNPMと非常によく似ているが、Yarnのパフォーマンスの方がやや優れている。<br>
<br>
<br>
Yarnの主な機能は、セキュリティと依存関係の解決速度である。<br>
pnpmは、ディスク効率とパフォーマンスに特化しており、コンテンツアドレサブルストレージによる効率的なパッケージ管理を実現する。<br>
厳密な依存関係管理により、予期しない動作を防ぎ、大規模プロジェクトでの使用に適している。<br>
<br>
これらのツールは、Node.jsがインストールされていることを前提としている。<br>
<br>
プロジェクトの要件、チームの慣習、パフォーマンスの要求に応じて、適切なパッケージマネージャーを選択することが重要である。<br>
これらのツールを適切に活用することで、効率的で保守性の高いNode.js開発環境を構築できる。<br>
<br><br>
<br><br>


== NordJS ==
== Yarn ==
==== NodeJSとは ====
Yarnは、Facebookによってリリースされたパッケージマネージャーであり、npmの代替として開発された。<br>
Yarnを使用するためには、NodeJSが必要である。<br>
<br>
したがって、NodeJSをインストールする。<br>
Yarnの主な特徴は、高速なインストール、信頼性の高い依存関係の解決、セキュリティの強化である。<br>
Yarnは、npmと互換性があり、同じpackage.jsonファイルを使用できる。<br>
<br>
==== Yarnのインストール ====
Yarnには2つのメジャーバージョンが存在する。<br>
* Yarn Berry (v4以降)
*: 最新のYarnであり、Plug'n'Play機能や高速なインストール等の新機能を提供する。
*: Node.js 16.10以降に同梱されているCorepackを使用してインストールすることが推奨される。
*: <br>
* Yarn Classic (v1.x)
*: 従来のYarnであり、広範な互換性と安定性を提供する。
*: npmや公式スクリプトを使用してインストールする。
<br>
<br>
NodeJSは、Web開発において必要不可欠なツールであり、ChromeのV8JavaScriptエンジン上に構築されたJavaScriptランタイムである。<br>
環境や要件に応じて、適切なバージョンとインストール方法を選択する。<br>
PHP等のプログラム言語を使用せずに、サーバ側のコードを実行するため、広く使用されている。<br>
また、他のプロセスを迅速に実行できるため、アプリケーションの機能が拡張されることを意味する。<br>
<br>
<br>
多くのシステム管理者は、Webアプリケーションが完全に機能できるように、サーバ上で実行する必要がある。<br>
===== Corepackを使用したインストール (推奨) =====
したがって、NodeJSのインストールは、サーバでWebアプリケーションを「提供」できるようにするための基本的な手順である。<br>
Corepackは、Node.js 16.10以降に同梱されているパッケージマネージャーのバージョン管理ツールである。<br>
Corepackを使用することで、プロジェクトごとに異なるバージョンのYarnを使い分けることができる。<br>
<br>
<br>
NodeJSのインストールする方法は2つあるので、それらを以下に記載する。<br>
Corepackを有効化する。<br>
corepack enable
<br>
<br>
==== NodeJSのインストール ====
もし、Corepackがインストールされていない場合は、npm経由でインストールする。<br>
===== 公式リポジトリからインストール =====
npm install -g corepack
最も簡単なインストール方法は、公式リポジトリからNodeJSをインストールすることである。<br>
<u>ただし、最新のNodeJSではない可能性があるため、注意すること。</u><br>
<br>
<br>
NodeJSに関連するパッケージがいくつか存在するが、インストールする必要があるのは、以下のパッケージのみである。<br>
Yarnが使用可能になったことを確認する。<br>
  sudo zypper install nodejs8
  yarn --version
<br>
<br>
次に、インストールされているNodeJSのバージョンを確認する。<br>
新しいプロジェクトを初期化する場合は、以下のコマンドを実行する。<br>
  node -v
  yarn init -2
<br>
<br>
===== NVMを使用してインストール =====
最新の安定版に更新する場合は、以下のコマンドを実行する。<br>
NodeJSは、新しいバージョンのリリースが非常に早いため、最新のNodeJSをインストールするには、NVMを使用する。<br>
yarn set version stable
yarn install
<br>
<br>
まず、NVMをダウンロードしてインストールする。<br>
特定のバージョンを指定してインストールする場合は、以下のコマンドを実行する。<br>
  wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
  # 特定のバージョンを指定
yarn set version 4.0.0
# リリース候補版 (テスト目的)
yarn set version canary
# ソースからビルド (開発目的)
yarn set version from sources
<br>
<br>
~/.profileファイルを更新する。<br>
Corepackを使用したインストールでは、Yarnのバイナリはプロジェクトの <u>.yarn/releases/</u> ディレクトリに保存される。<br>
source ~/.profile
このディレクトリと <u>.yarnrc.yml</u> ファイルをバージョン管理システムにコミットすることで、チーム全体で同じバージョンのYarnを使用できる。<br>
<br>
<br>
次に、NVMを使用して、使用可能な全てのNodeJSのバージョンを表示する。<br>
===== Yarn Classicのインストール =====
nvm ls-remote
Yarn Classic (v1.22) が必要な場合は、以下のいずれかの方法でインストールする。<br>
<br>
<br>
インストールするNodeJSを選択する。 (NodeJSの公式Webサイトにアクセスして、LTSのバージョンを推奨する)<br>
====== npmを使用したインストール ======
  nvm install <バージョン名>
npm経由でグローバルにYarn Classicをインストールする方法である。<br>
この方法は、Node.jsとnpmが既にインストールされていることを前提としている。<br>
  npm install -g yarn
<br>
<br>
次に、インストールされているNodeJSのバージョンを確認する。<br>
インストールが正常に完了したことを確認する。<br>
  node -v
  yarn --version
<br>
<br>
===== バイナリファイルのインストール =====
====== 公式インストールスクリプトを使用したインストール ======
[https://nodejs.org/ja/download/ NodeJSの公式Webサイト]から、NodeJSのバイナリファイルをダウンロードしてインストールする。<br>
公式のインストールスクリプトを使用する場合は、以下のコマンドを実行する。<br>
公式Webサイトから、"Linux Binaries (x64)"を選択してダウンロードする。<br>
このスクリプトは、Yarnを~/.yarnディレクトリにインストールし、シェルの設定ファイル (~/.bashrc、~/.zshrc、~/.config/fish/config.fish) に自動的に環境変数PATHを追加する。<br>
curl -o- -L https://yarnpkg.com/install.sh | bash
<br>
<br>
~/.profileファイルに、NodeJSの環境変数パスを追記する。<br>
Yarnが正常にインストールされたことを確認する。<br>
  vi ~/.profile
  yarn --version
<br>
<br>
~/.profileファイル
====== パッケージ管理システムからインストール ======
Linuxディストリビューションのパッケージ管理システムを使用してYarnをインストールすることもできる。<br>
export PATH="$HOME/InstallSoftware/Node/Node_<バージョン名>/bin:$PATH"
<br>
<br>
===== ソースコードからインストール =====
NodeJSのビルドに必要なライブラリをインストールする。<br>
  # RHEL
  # RHEL
  sudo dnf install make gcc-c++ python3 python3-pip
## Yarnのリポジトリを追加
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
## Yarnをインストール
  sudo dnf install yarn
# Debian
## Yarnの公式リポジトリを追加
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
   
   
  # SUSE
  ## パッケージリストを更新してYarnをインストール
  sudo zypper install make gcc-c++ python3 python3-pip
  sudo apt update && sudo apt install yarn
<br>
<br>
[https://nodejs.org/dist/ NodeJSの公式Webサイト]から、NodeJSのソースコードをダウンロードする。<br>
====== 手動インストール ======
ダウンロードしたファイルを解凍する。<br>
SUSEには公式リポジトリが存在しないため、手動インストールが必要となる。<br>
tar xf node-<バージョン>.tar.xz
cd node-<バージョン>
<br>
<br>
NodeJSをビルドおよびインストールする。<br>
[https://classic.yarnpkg.com/en/docs/install Yarnの公式Webサイト]にアクセスし、alternativesセクションから適切なバージョンをファイルをダウンロードする。<br>
  mkdir build && cd build
Tarballファイルをダウンロードして展開する。<br>
curl -L https://yarnpkg.com/latest.tar.gz -o yarn.tar.gz
  tar xf yarn.tar.gz
   
   
  # 通常のビルド
  # 任意のディレクトリに配置
  ../configure --prefix=<Nodeのインストールディレクトリ>
  mv yarn-v<バージョン> <Yarnのインストールディレクトリ>
make -j$(nproc)
make install
# Ninjaを使用したビルド (ビルド時間を短縮することができる)
../configure --prefix=<Nodeのインストールディレクトリ> --ninja
NINJA="ninja-build" make
make install
<br>
<br>
~/.profileファイルに、NodeJSの環境変数パスを追記する。<br>
~/.profileファイル等に環境変数 <code>PATH</code> を追記する。<br>
  vi ~/.profile
  vi ~/.profile
<br>
<br>
93行目: 117行目:
  # ~/.profileファイル
  # ~/.profileファイル
   
   
  export PATH="/<Nodeのインストールディレクトリ>/bin:$PATH"
  export PATH="/<Yarnのインストールディレクトリ>/bin:$PATH"
</syntaxhighlight>
<br>
Yarnが正常にインストールされたことを確認する。<br>
yarn --version
<br>
==== Yarnの使用方法 ====
Yarnの基本的なコマンドは、npmと類似しているが、より簡潔な構文を提供している。<br>
<br>
新しいプロジェクトを初期化する時は、以下に示すコマンドを実行する。<br>
# 対話形式でpackage.jsonを作成
yarn init
# デフォルト設定でpackage.jsonを作成
yarn init -y
<br>
package.jsonに記述された全ての依存関係をインストールする場合は、以下に示すコマンドを使用する。<br>
# 全ての依存関係をインストール
yarn install
## または
yarn
<br>
新しいパッケージを追加する場合は、以下に示すコマンドを使用する。<br>
# 本番環境で必要な依存関係として追加
yarn add <パッケージ名>
# 開発環境でのみ必要な依存関係として追加
yarn add --dev <パッケージ名>
## または
yarn add -D <パッケージ名>
# 特定のバージョンを指定して追加
yarn add <パッケージ名>@<バージョン>
# 複数のパッケージを同時に追加
yarn add <パッケージ1> <パッケージ2> <パッケージ3>
# グローバルに追加
yarn global add <パッケージ名>
<br>
インストールされているパッケージを更新する。<br>
# 全てのパッケージを更新
yarn upgrade
# 特定のパッケージを更新
yarn upgrade <パッケージ名>
# 特定のバージョンに更新
yarn upgrade <パッケージ名>@<バージョン>
# インタラクティブに更新するパッケージを選択
yarn upgrade-interactive
# 最新バージョンに更新 (メジャーバージョンを含む)
yarn upgrade-interactive --latest
<br>
パッケージを削除する。<br>
yarn remove <パッケージ名>
# 複数のパッケージを同時に削除
yarn remove <パッケージ1> <パッケージ2>
<br>
インストールされているパッケージの一覧を表示する。<br>
# ツリー形式で表示
yarn list
# トップレベルのパッケージのみ表示
yarn list --depth=0
# 特定のパターンに一致するパッケージを表示
yarn list --pattern "パターン"
<br>
パッケージに関する情報を表示する。<br>
yarn info <パッケージ名>
# 特定のフィールドのみ表示
yarn info <パッケージ名> version
yarn info <パッケージ名> dependencies
<br>
package.jsonに定義されているスクリプトを実行する。<br>
yarn run <スクリプト名>
# または
yarn <スクリプト名>
# 例 : テストスクリプトを実行
yarn test
# 例 : ビルドスクリプトを実行
yarn build
<br>
パッケージの脆弱性を確認する。<br>
yarn audit
# 脆弱性の詳細を表示
yarn audit --level moderate
<br>
==== yarn.lockファイル ====
Yarnは、yarn.lockファイルを使用して依存関係のバージョンを固定する。<br>
このファイルは、npmのpackage-lock.jsonに相当するものであり、チーム全体で一貫した依存関係を保証するために重要である。<br>
<br>
yarn.lockファイルは、Yarnが依存関係をインストールする際に自動生成される。<br>
<br>
yarn.lockファイルの特徴を以下に示す。<br>
* インストールされた全てのパッケージの正確なバージョンを記録する。
* 依存関係の解決順序を保証し、異なる環境で同じ結果を得られるようにする。
* チームメンバー間での依存関係の不整合を防ぐ。
<br>
yarn.lockファイルは手動で編集する必要はなく、バージョン管理システムにコミットすることが推奨される。<br>
プロジェクトを共有する際は、package.json、yarn.lock、.yarnrcファイル (存在する場合) を含める必要がある。<br>
<br>
==== Yarnのキャッシュ管理 ====
Yarnは、ダウンロードしたパッケージをローカルにキャッシュすることにより、インストール速度を向上させている。<br>
<br>
キャッシュに関連する操作を以下に示す。<br>
# キャッシュの場所を確認
yarn cache dir
# キャッシュをクリア
yarn cache clean
# 特定のパッケージのキャッシュをクリア
yarn cache clean <パッケージ名>
<br>
==== Yarn Berry (Yarn 4) 以降 ====
Yarn 4以降は、Yarn Berryとして知られる新しいアーキテクチャを採用している。<br>
Yarn Berryは、Yarn 1 (Classic) から大幅に刷新されており、以下に示す主要な機能が追加されている。<br>
<br>
===== Yarn Berryの機能 =====
Plug'n'Play (PnP) モードは、node_modulesディレクトリを生成せずに依存関係を管理する新しい仕組みである。<br>
この機能により、インストール時間の短縮とディスク使用量の削減が実現される。<br>
<br>
Zeroインストール機能は、.yarn/cacheディレクトリをバージョン管理に含めることで、<code>npm install</code> や <code>yarn install</code> を実行せずにプロジェクトを開始できる。<br>
<br>
ワークスペース機能の強化により、モノレポ構成の管理がより効率的になっている。<br>
また、プラグインシステムの導入により、機能を柔軟に拡張できる。<br>
<br>
===== Yarn Berryへのアップグレード =====
既存のプロジェクトをYarn Berryにアップグレードする。<br>
# Yarn 4以降にアップグレード
yarn set version berry
# または最新の安定版を指定
yarn set version stable
# 特定のバージョンを指定
yarn set version 4.0.0
<br>
アップグレード後、.yarnrcファイルが.yarnrc.ymlファイルに置き換えられて、.yarn/releasesディレクトリにYarn本体が保存される。<br>
これらのファイルとディレクトリは、バージョン管理システムにコミットすることが推奨される。<br>
<br>
===== Plug'n'Play (PnP) モードの使用 =====
PnPモードは、Yarn Berryのデフォルトモードである。<br>
このモードでは、node_modulesディレクトリの代わりに.pnp.cjsファイルが生成され、依存関係の解決が高速化される。<br>
<br>
PnPモードを無効にして従来のnode_modules方式を使用する場合は、.yarnrc.ymlファイルに以下の設定を追加する。<br>
<syntaxhighlight lang="yaml">
# .yarnrc.ymlファイル
nodeLinker: node-modules
</syntaxhighlight>
<br>
設定変更後、依存関係を再インストールする必要がある。<br>
yarn install
<br>
===== Zeroインストールの設定 =====
Zeroインストール機能を有効にするには、.yarn/cacheディレクトリ および .pnp.cjsファイル をバージョン管理システムにコミットする。<br>
<br>
.gitignoreファイルに以下の設定を追加する。<br>
<syntaxhighlight lang="text">
# .gitignore
# Yarn関連 (Zeroインストールを使用する場合)
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
</syntaxhighlight>
<br>
この設定により、チームメンバーはリポジトリをクローンした後、直ちにプロジェクトを実行できる。<br>
<br>
===== Yarn Berryのワークスペース =====
Yarn Berryは、モノレポ構成を効率的に管理するためのワークスペース機能を提供している。<br>
<br>
package.jsonファイルにワークスペースを定義する。<br>
<syntaxhighlight lang="json">
{
  "name": "my-monorepo",
  "private": true,
  "workspaces": [
    "packages/*",
    "apps/*"
  ]
}
</syntaxhighlight>
<br>
ワークスペース内のパッケージに対して、以下に示すコマンドを実行する。<br>
# 特定のワークスペースでコマンドを実行
yarn workspace <パッケージ名> run build
# 全てのワークスペースでコマンドを実行
yarn workspaces foreach run build
# 並列実行
yarn workspaces foreach --parallel run build
<br>
==== Yarn Classic (Yarn 1) と Yarn Berry (Yarn 4以降) の選択 ====
プロジェクトの要件に応じて、Yarn ClassicとYarn Berryのいずれかを選択する必要がある。<br>
<br>
Yarn Classicは、安定性と広範な互換性を重視する場合に適している。<br>
多くの既存プロジェクトで使用されており、トラブルシューティングのための情報が豊富である。<br>
Plug'n'Play等の新機能は使用できないが、従来のnode_modules方式で安定した動作が保証される。<br>
<br>
Yarn Berryは、最新の機能とパフォーマンスを重視する場合に適している。<br>
Plug'n'Playモードによる高速なインストール、Zeroインストールによる効率的なCI/CD、プラグインシステムによる拡張性等のメリットがある。<br>
ただし、一部のパッケージやツールとの互換性問題が発生する可能性があるため、プロジェクトの要件を慎重に評価する必要がある。<br>
<br><br>
 
== pnpm ==
pnpmは、パフォーマンスとディスク効率に特化したパッケージマネージャーである。<br>
pnpmの最大の特徴は、コンテンツアドレサブルストレージを使用することで、同じパッケージの複数のバージョンを効率的に管理できる。<br>
<br>
通常のnpmやYarnでは、プロジェクトごとにnode_modulesディレクトリにパッケージがコピーされるため、ディスク容量を大量に消費するが、<br>
pnpmはハードリンクを使用してパッケージを共有するため、ディスク使用量を大幅に削減できる。<br>
<br>
==== pnpmのインストール ====
===== 公式インストールスクリプトを使用したインストール =====
公式のインストールスクリプトを使用する方法が推奨される。<br>
curl -fsSL https://get.pnpm.io/install.sh | sh -
# または
wget -qO- https://get.pnpm.io/install.sh | sh -
<br>
インストールスクリプトは、pnpmをインストールして、シェルの設定ファイルに必要な環境変数を自動的に追加する。<br>
<br>
pnpmが正常にインストールされたことを確認する。<br>
pnpm --version
<br>
===== npmを使用したインストール =====
npm経由でグローバルにpnpmをインストールする場合は、以下に示すコマンドを実行する。<br>
npm install -g pnpm
<br>
インストールが正常に完了したことを確認する。<br>
pnpm --version
<br>
===== Cargoを使用したインストール =====
RustのパッケージマネージャーであるCargoを使用して、pnpmをインストールすることもできる。<br>
<u>この方法は、Rustがインストールされていることを前提としている。</u><br>
cargo install pnpm
<br>
==== pnpmの使用方法 ====
pnpmのコマンド構文は、npmと類似している。<br>
<br>
新しいプロジェクトを初期化する時は、以下に示すコマンドを実行する。<br>
pnpm init
<br>
package.jsonに記述された全ての依存関係をインストールする場合は、以下に示すコマンドを使用する。<br>
# 全ての依存関係をインストール
pnpm install
## または
pnpm i
<br>
新しいパッケージを追加する場合は、以下に示すコマンドを使用する。<br>
# 本番環境で必要な依存関係として追加
pnpm add <パッケージ名>
# 開発環境でのみ必要な依存関係として追加
pnpm add --save-dev <パッケージ名>
## または
pnpm add -D <パッケージ名>
# 特定のバージョンを指定して追加
pnpm add <パッケージ名>@<バージョン>
# 複数のパッケージを同時に追加
pnpm add <パッケージ1> <パッケージ2> <パッケージ3>
# グローバルに追加
pnpm add -g <パッケージ名>
<br>
インストールされているパッケージを更新する。<br>
# 全てのパッケージを更新
pnpm update
# 特定のパッケージを更新
pnpm update <パッケージ名>
# 最新バージョンに更新 (メジャーバージョンを含む)
pnpm update --latest <パッケージ名>
# インタラクティブに更新するパッケージを選択
pnpm update -i
<br>
パッケージを削除する。<br>
pnpm remove <パッケージ名>
# または
pnpm rm <パッケージ名>
# 複数のパッケージを同時に削除
pnpm remove <パッケージ1> <パッケージ2>
<br>
インストールされているパッケージの一覧を表示する。<br>
# ツリー形式で表示
pnpm list
# トップレベルのパッケージのみ表示
pnpm list --depth=0
# グローバルにインストールされているパッケージを表示
pnpm list -g
<br>
パッケージに関する情報を表示する。<br>
pnpm view <パッケージ名>
# 特定のフィールドのみ表示
pnpm view <パッケージ名> version
pnpm view <パッケージ名> dependencies
<br>
package.jsonに定義されているスクリプトを実行する。<br>
pnpm run <スクリプト名>
# または一部のコマンドは短縮形で実行可能
pnpm test
pnpm start
<br>
パッケージの脆弱性を確認クする。<br>
pnpm audit
# 脆弱性の自動修正 (可能な場合)
pnpm audit --fix
<br>
==== pnpm-lock.yamlファイル ====
pnpmは、pnpm-lock.yamlファイルを使用して依存関係のバージョンを固定する。<br>
このファイルは、YAML形式で記述されており、人間が読みやすい形式となっている。<br>
<br>
pnpm-lock.yamlファイルの特徴を以下に示す。<br>
* インストールされた全てのパッケージの正確なバージョンと整合性ハッシュを記録する。
* 依存関係の解決結果を保存し、異なる環境で同じ結果を保証する。
* YAML形式のため、差分が読みやすく、コードレビューが容易である。
<br>
<u>pnpm-lock.yamlファイルは自動生成されるため、手動で編集する必要はなく、バージョン管理システムにコミットすることが推奨される。</u><br>
<br>
==== pnpmのストア管理 ====
pnpmは、全てのパッケージを中央ストアに保存し、プロジェクトからはハードリンクで参照する仕組みを採用している。<br>
この仕組みにより、同じパッケージのバージョンを複数のプロジェクトで共有でき、ディスク使用量を大幅に削減できる。<br>
<br>
ストアに関連する操作は以下の通りである。<br>
# ストアの場所を確認
pnpm store path
# 現在のプロジェクトで使用されていないパッケージをストアから削除
pnpm store prune
# ストアの状態を確認
pnpm store status
# ストアを完全にクリア (注意:全てのプロジェクトに影響する)
rm -rf $(pnpm store path)
<br>
ストアのディレクトリは、デフォルトで <u> ~/.local/share/pnpm/store</u> に配置される。<br>
<br>
==== pnpmのワークスペース機能 ====
pnpmは、モノレポ (複数のパッケージを一つのリポジトリで管理する構成) をネイティブにサポートしている。<br>
ワークスペースを使用することで、複数のパッケージ間で依存関係を効率的に管理できる。<br>
<br>
ワークスペースを設定するには、プロジェクトのルートディレクトリにpnpm-workspace.yamlファイルを作成する。<br>
<syntaxhighlight lang="yaml">
# pnpm-workspace.yaml
packages:
  - 'packages/*'
  - 'apps/*'
  - 'tools/*'
</syntaxhighlight>
<br>
この設定により、packages、apps、toolsディレクトリ内の全てのサブディレクトリがワークスペースとして認識される。<br>
<br>
ワークスペース内のパッケージに対してコマンドを実行する。<br>
# 特定のワークスペースでコマンドを実行
pnpm --filter <パッケージ名> run build
# パターンに一致する全てのワークスペースでコマンドを実行
pnpm --filter "./packages/*" run build
# 全てのワークスペースでコマンドを実行
pnpm -r run build
# 並列実行
pnpm -r --parallel run build
<br>
ワークスペース間の依存関係を追加する。<br>
# パッケージAからパッケージBへの依存を追加
pnpm --filter <パッケージA> add <パッケージB> --workspace
<br>
==== pnpmの高度な機能 ====
pnpmには、プロジェクト管理を効率化するための高度な機能が用意されている。<br>
<br>
===== 厳密な依存関係管理 =====
pnpmは、デフォルトで厳密な依存関係管理を行う。<br>
これにより、package.jsonに記述されていないパッケージを使用することができず、ゴーストディペンデンシー (暗黙的な依存関係) の問題を防ぐことができる。<br>
<br>
この動作を緩和する必要がある場合は、.npmrcファイルに以下に示す設定を追加する。<br>
<syntaxhighlight lang="text">
# .npmrc
# 厳密なピアディペンデンシーのチェックを無効化
strict-peer-dependencies=false
# ホイスティングを有効化 (互換性のため)
shamefully-hoist=true
</syntaxhighlight>
<br>
===== パッチ機能 =====
pnpmは、依存パッケージに対してパッチを適用する機能を提供している。<br>
この機能により、上流のパッケージを待たずに、バグ修正や機能追加を行うことができる。<br>
# パッケージのパッチを作成
pnpm patch <パッケージ名>@<バージョン>
# パッチディレクトリが表示されるので、必要な変更を加える
# 変更後、以下に示すコマンドでパッチをコミットする
pnpm patch-commit /path/to/patch/directory
<br>
パッチファイルは、patchesディレクトリに保存され、package.jsonのpnpm.patchedDependenciesフィールドに記録される。<br>
<br>
===== カタログ機能 =====
pnpmのカタログ機能を使用することで、ワークスペース全体で依存関係のバージョンを一元管理できる。<br>
pnpm-workspace.yamlファイルにカタログを定義する。<br>
<syntaxhighlight lang="yaml">
# pnpm-workspace.yaml
packages:
  - 'packages/*'
 
catalog:
  react: ^19.0.0
  typescript: ^5.0.0
</syntaxhighlight>
<br>
package.jsonファイルでカタログを参照する。<br>
<syntaxhighlight lang="json">
{
  "dependencies": {
    "react": "catalog:"
  },
  "devDependencies": {
    "typescript": "catalog:"
  }
}
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>


== Yarnのインストール ==
== パッケージマネージャーの比較 ==
SUSEには、NodeJSの公式リポジトリが存在しない。<br>
==== npm ====
ただし、スクリプトを使用してYarnをインストールすることができる。<br>
npmは、Node.jsに標準で付属しており、追加のインストールが不要であることがメリットである。<br>
また、最も広く使用されているため、ドキュメントとコミュニティサポートが充実している。<br>
<br>
<br>
* 手動インストール
npm 7以降では、パフォーマンスが大幅に改善されており、ワークスペース機能もサポートされている。<br>
*: [https://classic.yarnpkg.com/en/docs/install Yarnの公式Webサイト]から、
<br>
*: Operating Systemプルダウンからalternatives、Versionプルダウンからstable(バージョン名)を選択して、
==== Yarn ====
*: Manual Install via tarballセクションから、Yarnのtar.gzファイルをダウンロードする。
Yarnは、並列インストールによる高速化と、yarn.lockによる確実な依存関係の固定が特徴である。<br>
*: 解凍したディレクトリを、例えば、$HOME/InstallSoftware/Yarnディレクトリに配置する。
Yarn Classicは、安定性と互換性を重視する場合に適している。<br>
*: ~/.profileファイルにおいて、以下の環境変数PATHを追記する。
<br>
*: export PATH="$HOME/InstallSoftware/Yarn/bin:$PATH"
Yarn Berryは、Plug'n'Play機能により、高速化とディスク効率の向上が図られている。<br>
<br>
ワークスペース機能がネイティブにサポートされており、モノレポ構成に適している。<br>
<br>
==== pnpm ====
pnpmは、コンテンツアドレサブルストレージとハードリンクを使用することで、ディスク使用量を大幅に削減できる点が最大の特徴である。<br>
また、厳密な依存関係の管理により、ゴーストディペンデンシーの問題を防ぐことができる。<br>
<br>
ワークスペース機能も優れており、モノレポ構成の管理が効率的に行える。<br>
<br>
一般的に、pnpmが最も高速なインストール速度を提供し、次いでYarn、npmの順となる。<br>
<br>
==== 移行時の注意 ====
既存プロジェクトのパッケージマネージャーを変更する場合は、以下に示す事柄に注意する。<br>
<br>
* ロックファイルの違い
*: npmはpackage-lock.json、Yarnはyarn.lock、pnpmはpnpm-lock.yamlを使用する。
*: パッケージマネージャーを変更する場合は、古いロックファイルを削除して、新しいロックファイルを生成する必要がある。
*: <br>
*: <br>
* 自動インストール
* 統一されたツールを使用すること
*: まず、curlをインストールする。
*: 異なるパッケージマネージャーを混在させると、ロックファイルの不整合が発生する可能性がある。
*: <code>sudo zypper install curl</code>
*: プロジェクトのルートディレクトリに、使用するパッケージマネージャーを明記することを推奨する。
*: <br>
*: <br>
*: 次に、以下のコマンドを実行して、最新のyarnをインストールする。
* CI/CD環境の設定を更新する
*: Yarnは、~/.yarnディレクトリにインストールされる。
*: 各パッケージマネージャーに応じて、インストールコマンドとキャッシュの設定を適切に構成する必要がある。
*: なお、~/.bashrcファイル、~/zshrcファイル、~/.config/fish/config.fishファイルに、Yarnの環境変数<code>PATH</code>が自動的に追記される。
*: <code>curl -o- -L https://yarnpkg.com/install.sh | bash</code>
*: <br>
*: インストール後、ターミナルを起動することにより、Yarnを使用することができる。
*: <br>
*: 最後に、インストールされているYarnのバージョンを確認する。<br>
*: <code>yarn -v</code>
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:RHEL]][[カテゴリ:SUSE]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]][[カテゴリ:Web]]