.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実行時から反映される。ただしnodeLinkerやnmHoistingLimitsの変更後はnode_modulesの再構築(yarn install --immutableの失敗)が必要になる場合がある - 他の設定との関連:
yarnPathで Yarn のバージョンを固定しているため、全開発者・CI で同じバージョンの Yarn が使用される。packageExtensionsのabstract-socketへの依存追加は、パッケージ側の依存宣言不足を補完するワークアラウンドである
技術的負債・既知の問題
| 種別 | 内容 | 影響度 | 改善案 |
|---|---|---|---|
| ワークアラウンド | packageExtensions で abstract-socket パッケージに node-addon-api 依存を手動追加している(パッケージ側の依存宣言不足の補完) |
低 | abstract-socket パッケージが依存宣言を修正した場合は packageExtensions から削除可能 |
拡張性・保守性
- 拡張ポイント: 新しいパッケージの依存宣言不足を補完する場合は
packageExtensionsに追加する。age gate の免除対象を追加する場合はnpmPreapprovedPackagesに追加する - 制約事項:
enableScripts: falseのため、ライフサイクルスクリプトに依存するパッケージ(ネイティブモジュールのビルド等)は別途手動でビルドが必要になる場合がある - テスト容易性: 該当なし。設定ファイルのため単体テストの対象外
関連ファイル
- tsconfig.json.md - TypeScript ベース設定(
typeRootsでnode_modules/@typesを参照しており、Yarn のnode_modules構造に依存)