-
-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathpnpm-workspace.yaml
More file actions
50 lines (46 loc) · 3.16 KB
/
Copy pathpnpm-workspace.yaml
File metadata and controls
50 lines (46 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# pnpm settings (supply-chain hardening)
# 単一パッケージでも pnpm の設定ファイルとして機能する。
# 公開直後の新バージョンを採用しないクールダウン (分単位)。
# 乗っ取り直後に公開された悪性バージョンの自動取り込みを防ぐ。1440 分 = 1 日。
# Dependabot は pnpm の minimumReleaseAge を認識せず、窓内の新版で即 PR を
# 作るため install (--frozen-lockfile) が ERR_PNPM_NO_MATCHING_VERSION で
# 失敗する。そこで pnpm 側はインストール可能になる下限の 1 日に抑え、
# PR 作成の遅延は Dependabot 側の cooldown (.github/dependabot.yml, 3 日)
# に任せる。cooldown >= この minimumReleaseAge を満たす限り install は通る。
# 緊急のセキュリティ修正を即時採用したい場合は minimumReleaseAgeExclude で
# 対象パッケージを個別に除外できる。
minimumReleaseAge: 1440
# クールダウンの適用除外。
# browserslist エコシステムのブラウザ互換データ群はほぼ毎日リリースされる
# ため、クールダウンだと解決のたびに窓内の最新版を掴んで CI の
# --frozen-lockfile が失敗する (pnpm の minimumReleaseAge は古い版へ
# 自動降格せず検証で弾く)。これらは dev 専用・データのみで dist には
# 一切バンドルされない (公開される action に含まれない) ため、供給網
# リスクが小さく除外する。
minimumReleaseAgeExclude:
- baseline-browser-mapping
- caniuse-lite
- electron-to-chromium
# インストール時ビルドスクリプト (postinstall 等) は pnpm 既定で全ブロックされる。
# 各パッケージのビルド可否を明示する。原則 false (= 実行しない) を維持する。
# unrs-resolver は jest のモジュール解決器。プリビルドバイナリ
# (@unrs/resolver-binding-*) が optional dependency で入るためネイティブ
# ビルドは不要 → false。
allowBuilds:
unrs-resolver: false
# 推移的依存のバージョン強制 (セキュリティ修正)。
# qs: typed-rest-client が qs@6.15.1 をピン留めしており、修正版 6.15.2 を
# 使う上流が存在しない (最新の typed-rest-client@3.0.0 も 6.15.1 固定)。
# GHSA-q8mj-m7cp-5q26 (qs.stringify の DoS, 脆弱 <=6.15.1 / 修正 >=6.15.2)
# を塞ぐため override で 6.15.2 以上へ引き上げる。patch 上げで API 互換。
overrides:
qs: '>=6.15.2'
# js-yaml: jest のカバレッジ機構 (@jest/transform → babel-plugin-istanbul →
# @istanbuljs/load-nyc-config) が js-yaml@^3.13.1 をピン留めしており、修正版
# 4.2.0 を使う上流が存在しない。GHSA (js-yaml <=4.1.1 / 修正 >=4.2.0) を塞ぐ
# ため override で 4 系へ引き上げる。当プロジェクトは jest のカバレッジを
# 一切使わない (jest.config.mjs に collectCoverage なし / transform は
# jest-transform.cjs の型ストリップのみ) ため load-nyc-config は実行されず、
# js-yaml 3→4 の API 差異 (safeLoad
# 削除等) の影響を受けない。3 系のみを対象にするためセレクタを付ける。
js-yaml@^3: '^4.2.0'