Skip to content

fix: lockfile がない Node プロジェクトでも設定からパッケージマネージャーを選ぶ - #140

Merged
owayo merged 1 commit into
mainfrom
fix/issue-139-node-package-manager-hints
Nov 11, 2026
Merged

owayo merged 1 commit into
mainfrom
fix/issue-139-node-package-manager-hints

Conversation

@owayo

@owayo owayo commented Nov 11, 2026

Copy link
Copy Markdown
Owner

概要

lockfile がない pnpm のプロジェクトで --install を実行すると npm が選ばれ、package-lock.json と npm の node_modules が作られていました。packageManager と設定ファイルから使用するパッケージマネージャーを判断し、pnpm-workspace.yaml がある新規プロジェクトでも pnpm を実行します。

原因と変更

通常の判定は lockfile がない場合に npm へ戻り、pnpm の補助判定は --refresh-lock だけが持っていました。判定を共通化し、既存の lockfile の優先順位を維持したうえで、package.json の packageManager、pnpm-workspace.yaml、.yarnrc.yml、bunfig.toml の順で調べます。該当する印がなければ npm を使います。mise のツール一覧は判定に使いません。

--verbose では install が lockfile を作る前に、判定に使ったファイルやフィールドを表示します。BOM 付き package.json と、ルートに package.json がない pnpm workspace も扱います。選択した pnpm は既存の age 設定・監査・復元処理を通ります。使い方の英語版と日本語版を更新しました。

検証

  • 修正前に追加した判定テストが 4 件失敗することを確認
  • make ci(Windows では MISE に実行ファイルを明示): pass。2,948 件成功、1 件は既存の ignored
  • 最終変更後の make check と mise exec -- cargo test --locked node_pm_ --lib も pass
  • 判定の優先順位、未対応・不正な宣言のフォールバック、通常と refresh の一致、pnpm の age 設定、新規 lock の保存・復元を回帰テストで確認
  • Linux/macOS 向け CLI テストを追加: pnpm を実行して pnpm-lock.yaml を生成し、npm を呼ばず、verbose のときだけ元の判定理由を表示することを確認
  • astro-sight review --git: API 変更・未使用シンボル・呼び出し元の取り残しなし

Closes #139

通常の --install は lockfile がないと npm を選んでいたため、pnpm-workspace.yaml がある新規プロジェクトでも package-lock.json と npm の node_modules を作っていた。pnpm を選ぶ補助処理は --refresh-lock にしかなく、通常の install と lock の監査で判定が分かれていた。

既存の lockfile の優先順位を保ち、lockfile がない場合は package.json の packageManager、pnpm-workspace.yaml、.yarnrc.yml、bunfig.toml の順で判定する。認識できる印がなければ npm を使い、mise のツール設定は判定に使わない。--refresh-lock の個別処理を共通の判定へ統合し、BOM 付きの package.json にも対応する。

--verbose では install が lockfile を作る前に判定に使ったファイルやフィールドを表示する。判定の優先順位、通常と refresh の一致、pnpm の age 設定、新規 lock の保存・復元、CLI の実行先と表示を回帰テストで確認し、英語と日本語の使い方を更新する。
@owayo owayo self-assigned this Nov 11, 2026
@coderabbitai

coderabbitai Bot commented Nov 11, 2026

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2f3d50d9-7fa6-440d-a37b-1bf447ce078c
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@owayo
owayo merged commit c0aeb99 into main Nov 11, 2026
8 checks passed
@owayo
owayo deleted the fix/issue-139-node-package-manager-hints branch November 11, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

lockfile が無いと、pnpm-workspace.yaml があっても npm で install して package-lock.json を作る

1 participant