.yarnrc.yml

基本情報

項目 内容
ファイルパス .yarnrc.yml
種別 パッケージマネージャー設定(Yarn 4)
適用環境 開発環境(依存パッケージ管理時)

概要

Electron プロジェクトの Yarn 4 パッケージマネージャー設定ファイルである。enableScripts: false でインストール時のライフサイクルスクリプト実行を無効化し、セキュリティリスクを低減している。nmHoistingLimits: workspaces でモジュールのホイスティングをワークスペース単位に制限し、依存解決の予測可能性を高めている。nodeLinker: node-modules で従来の node_modules ディレクトリ方式を使用し、Plug'n'Play は使用しない。abstract-socket パッケージに対して node-addon-api の依存を packageExtensions で追加している。プロキシ設定は環境変数(HTTP_PROXY, HTTPS_PROXY)から取得する。

設計パターン

特定の設計パターンは使用していません。YAML 形式の静的設定ファイルであり、プログラムのロジックやクラス設計は含まれていません。

主要な構成要素

クラス / 関数一覧

YAML 形式の設定ファイルであり、クラス・メソッド・関数は定義されていないため該当なし。

重要なメソッド・関数の詳細

該当なし。設定ファイルのためメソッド・関数は存在しない。

設定項目一覧

セクション キー 説明 推奨値
(トップレベル) enableScripts false インストール時のライフサイクルスクリプト実行を無効化 false(セキュリティ上推奨)
(トップレベル) nmHoistingLimits "workspaces" ホイスティングをワークスペース単位に制限 "workspaces"
(トップレベル) nodeLinker "node-modules" 従来の node_modules 方式を使用 "node-modules"
(トップレベル) npmMinimalAgeGate 10080 パッケージ公開から利用可能になるまでの最低時間(分)。10,080 分 = 7 日 10080
(トップレベル) npmPreapprovedPackages ["@electron/*"] age gate を免除するパッケージパターン -
(トップレベル) httpProxy "${HTTP_PROXY:-}" HTTP プロキシ(環境変数から取得) 環境に依存
(トップレベル) httpsProxy "${HTTPS_PROXY:-}" HTTPS プロキシ(環境変数から取得) 環境に依存
(トップレベル) yarnPath .yarn/releases/yarn-4.12.0.cjs 使用する Yarn のバージョン プロジェクトで固定
packageExtensions abstract-socket@*.dependencies { "node-addon-api": "8.0.0" } abstract-socket パッケージに node-addon-api 依存を追加 -

環境別差分

キー 開発環境 本番環境 理由
httpProxy / httpsProxy 環境変数 HTTP_PROXY / HTTPS_PROXY から取得 - プロキシ環境への対応。本番ビルドでも同じ設定が適用される
enableScripts false - 開発・CI 共通。セキュリティリスク低減のため

セキュリティ考慮

設定項目 現在値 推奨値 リスク
enableScripts false false ライフサイクルスクリプトの実行を無効化しており、悪意のあるパッケージによるコード実行リスクを排除
npmMinimalAgeGate 10080(7 日) 10080 以上 パッケージ公開から 7 日間は利用不可にすることで、サプライチェーン攻撃(typosquatting やアカウント乗っ取り後の悪意ある公開)のリスクを低減
npmPreapprovedPackages ["@electron/*"] 信頼できるスコープのみ @electron スコープのパッケージは age gate を免除。Electron チームが管理するパッケージであるため妥当

依存関係

関連先 種別 関連内容
.yarn/releases/yarn-4.12.0.cjs ランタイム Yarn 4.12.0 のバンドルされた実行ファイル
package.json 設定 依存パッケージの定義。本ファイルの設定に従ってインストールされる
環境変数 HTTP_PROXY, HTTPS_PROXY 環境設定 プロキシサーバーの接続先

定数一覧

定数定義が存在しないため該当なし。設定値は YAML のキー・バリュー形式で管理されている。

リレーション

Model ではないため該当なし。

オーバーライドメソッド

設定ファイルであり、クラスの継承関係を持たないため該当なし。

データ構造

設定ファイルであり、クラスプロパティや独自のデータ構造は定義されていない。設定値の構造は「設定項目一覧」セクションを参照。

注意点・特記事項

  • 変更時の影響範囲: 全開発者の yarn install 挙動に影響する。特に nodeLinker の変更は node_modules の構造を根本的に変えるため、CI 含むすべての環境で動作確認が必要
  • 再起動要否: 再起動不要。次回の yarn install 実行時から反映される。ただし nodeLinkernmHoistingLimits の変更後は node_modules の再構築(yarn install --immutable の失敗)が必要になる場合がある
  • 他の設定との関連: yarnPath で Yarn のバージョンを固定しているため、全開発者・CI で同じバージョンの Yarn が使用される。packageExtensionsabstract-socket への依存追加は、パッケージ側の依存宣言不足を補完するワークアラウンドである

技術的負債・既知の問題

種別 内容 影響度 改善案
ワークアラウンド packageExtensionsabstract-socket パッケージに node-addon-api 依存を手動追加している(パッケージ側の依存宣言不足の補完) abstract-socket パッケージが依存宣言を修正した場合は packageExtensions から削除可能

拡張性・保守性

  • 拡張ポイント: 新しいパッケージの依存宣言不足を補完する場合は packageExtensions に追加する。age gate の免除対象を追加する場合は npmPreapprovedPackages に追加する
  • 制約事項: enableScripts: false のため、ライフサイクルスクリプトに依存するパッケージ(ネイティブモジュールのビルド等)は別途手動でビルドが必要になる場合がある
  • テスト容易性: 該当なし。設定ファイルのため単体テストの対象外

関連ファイル

  • tsconfig.json.md - TypeScript ベース設定(typeRootsnode_modules/@types を参照しており、Yarn の node_modules 構造に依存)