Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[rush] common-versions.json preferredVersions will cause rush install always fail when subspaces feature is enabled

オープン
#5,602 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
nodejs, typescript

調査の方向性

Reproduce the issue with common-versions.json, subspaces, and the rush update --full && rush --debug install commands. Start by tracing how rush update generates common/temp//pnpmfileSettings.json and .pnpmfile.cjs; done means preferredVersions is retained and rush install succeeds without reporting an out-of-date pnpm-lock.yaml.

索引モデルが issue の本文から書いたものです。

説明

Summary

When using common-versions.json preferredVersions config, rush install will always fail.

Repro steps

  1. Create a rush repo state with subspaces feature enabled.
  2. Create a package.json with "rxjs": "^7".
  3. Add "rxjs": "7.8.2" in common-versions.json preferredVersions field.
  4. Run rush update --full && rush --debug install.

The following error will show:

Symlinking "/Users/majunchen/lp/rush-sample-repo/common/temp/pnpm-local"
  --> "/Users/majunchen/.rush/node-v22.20.0/pnpm-9.15.9"
Transforming /Users/majunchen/lp/rush-sample-repo/common/config/subspaces/default/.npmrc
  --> "/Users/majunchen/lp/rush-sample-repo/common/temp/default/.npmrc"

Updating workspace files in /Users/majunchen/lp/rush-sample-repo/common/temp/default
Total amount of time spent to hash related package.json files in the injected installation case: 0.00 seconds
Copying "/Users/majunchen/lp/rush-sample-repo/common/config/subspaces/default/pnpm-lock.yaml"
  --> "/Users/majunchen/lp/rush-sample-repo/common/temp/default/pnpm-lock.yaml"
Copying "/Users/majunchen/lp/rush-sample-repo/common/config/subspaces/default/pnpm-lock.yaml"
  --> "/Users/majunchen/lp/rush-sample-repo/common/temp/default/pnpm-lock-preinstall.yaml"

The shrinkwrap file (pnpm-lock.yaml) contains the following issues:
  Dependencies of project "app1" do not match the current shrinkwrap.
  Dependencies of project "app2" do not match the current shrinkwrap.


The shrinkwrap file (pnpm-lock.yaml) is out of date. You need to run "rush update".

Error: An error occurred.
    at WorkspaceInstallManager.prepareAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/chunks/InstallManagerFactory.js:803:19)
    at async WorkspaceInstallManager.doInstallAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/chunks/InstallManagerFactory.js:429:102)
    at async WorkspaceInstallManager.doInstallAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/chunks/InstallManagerFactory.js:1347:9)
    at async InstallAction._doInstallAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/commons.js:854:9)
    at async InstallAction.runAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/commons.js:821:21)
    at async InstallAction.onExecuteAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/commons.js:19739:9)
    at async InstallAction._executeAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@rushstack/ts-command-line/lib/providers/CommandLineAction.js:65:9)
    at async RushCommandLineParser.onExecuteAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@rushstack/ts-command-line/lib/providers/CommandLineParser.js:263:13)
    at async RushCommandLineParser._wrapOnExecuteAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/commons.js:26798:13)
    at async RushCommandLineParser.onExecuteAsync (/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/@microsoft/rush-lib/dist/commons.js:26746:13)

Expected result: rush install should success.

Actual result: rush install failed.

Details

After some investigations, I found the common/temp/<subspaceName>/pnpmfileSettings.json lost the preferredVersions data after rush update.

{
  "workspaceProjects": {},
  "subspaceProjects": {
    "app1": {
      "packageName": "app1",
      "projectRelativeFolder": "packages/app1",
      "packageVersion": "1.0.0",
      "injectedDependencies": []
    }
  },
  "semverPath": "/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/semver/index.js",
  "userPnpmfilePath": "/Users/*/lp/rush-sample-repo/common/config/subspaces/default/.pnpmfile.cjs"
}

This preferred json should be like:

{
  "allPreferredVersions": {
    "rxjs": "7.8.2"
  },
  "workspaceProjects": {},
  "subspaceProjects": {
    "app1": {
      "packageName": "app1",
      "projectRelativeFolder": "packages/app1",
      "packageVersion": "1.0.0",
      "injectedDependencies": []
    }
  },
  "semverPath": "/Users/*/.rush/node-v22.20.0/rush-5.165.0/node_modules/semver/index.js",
  "userPnpmfilePath": "/Users/*/lp/rush-sample-repo/common/config/subspaces/default/.pnpmfile.cjs"
}

So, when rush call pnpm install, the common/temp/<subspaceName>/.pnpmfile.cjs lost the overrides version data and generate a wrong pnpm-lock.yaml.

Standard questions

Please answer these questions to help us investigate your issue more quickly:

Question Answer
@microsoft/rush globally installed version? 5.165.0
rushVersion from rush.json? 5.165.0
pnpmVersion, npmVersion, or yarnVersion from rush.json? 9.15.9
(if pnpm) useWorkspaces from pnpm-config.json? Yes
Operating system? Mac
Would you consider contributing a PR? Yes
Node.js version (node -v)? 22.20.0
主要言語
TypeScript
スター
6.5k
フォーク
708
平均マージ
4日 13時間
マージ済み PR(30日)
62

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/rushstack のほかの issue

microsoft/rushstack の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。