Skip to content

add yarn install config option#14

Merged
alexmc2 merged 1 commit intomainfrom
yarn-install
Feb 21, 2026
Merged

add yarn install config option#14
alexmc2 merged 1 commit intomainfrom
yarn-install

Conversation

@alexmc2
Copy link
Copy Markdown
Owner

@alexmc2 alexmc2 commented Feb 21, 2026

Package Manager (Yarn) Support — February 21, 2026

Context

This update adds package manager selection to the CLI so dependency installation and post-generation command guidance can use either npm (default) or yarn.

Before this change, installs and next-step commands were hardcoded to npm.

What Was Added

1. Package manager modeled in CLI state

  • Added PackageManager = 'npm' | 'yarn' type.
  • Added packageManager to:
    • parsed CLI flags
    • flag presence tracking
    • user selections
  • Default selection is npm.

Primary files:

  • src/core/types.ts
  • src/core/defaults.ts
  • src/core/labels.ts

2. CLI argument support for package manager selection

  • Added support for:
    • --package-manager=<npm|yarn>
    • --pm <npm|yarn>
    • --yarn (shortcut)
  • Added --yarn=false behavior to map back to npm.
  • Added parser safety so invalid --pm values do not consume project-name positional arguments.

Primary file:

  • src/cli/args.ts

3. Interactive prompt selection

  • Added Package manager prompt in interactive flow when not provided via flags.
  • Non-interactive (--yes / non-TTY) flow uses parsed/default package manager.

Primary file:

  • src/cli/prompts.ts

4. Install execution now uses selected package manager

  • Install command formatting is centralized:
    • npm: npm install --no-audit --no-fund [--loglevel=error]
    • yarn: yarn install [--silent]
  • Runtime dependency installation now executes the selected package manager binary.
  • Package manager binary presence check is performed only when installation is enabled (so dry-run and --no-install are not blocked by missing yarn).

Primary files:

  • src/utils/exec.ts
  • src/cli/index.ts

5. Next-steps output now reflects selected package manager

  • Updated command rendering so next steps show:
    • npm run ... / npm test for npm
    • yarn ... for yarn
  • Includes db script commands and standard dev/test/build commands.
  • Added package manager in both dry-run and final summary cards.

Primary file:

  • src/cli/output.ts

6. Documentation updates

  • Added package manager option in README options table.
  • Added new CLI flags section rows for:
    • --package-manager=<name>
    • --pm <name>
    • --yarn
  • Added explicit Yarn usage example.
  • Added release notes for this feature in changelog 0.1.7.

Primary files:

  • README.md
  • CHANGELOG.md

Test Coverage and Verification

Updated tests:

  • test/args.test.ts
    • package manager parsing via --package-manager and --pm
    • shortcut behavior for --yarn
    • invalid value handling
    • positional safety for invalid --pm
  • test/output.test.ts
    • yarn-based next-step command rendering

Verification executed:

  • npm run test:unit
  • npm run lint
  • npm run build

Result

The CLI now supports Yarn end-to-end for dependency installation and command guidance, while keeping npm as default behavior.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds package manager selection (npm or yarn) to the CLI scaffolding tool, enabling users to choose their preferred dependency installer for both runtime installation and post-generation command guidance.

Changes:

  • Added PackageManager type and integrated it throughout CLI state (flags, selections, defaults)
  • Implemented CLI argument parsing for --package-manager, --pm, and --yarn shortcut flags
  • Updated interactive prompts, execution logic, and output formatting to respect the selected package manager
  • Added comprehensive test coverage and documentation

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/core/types.ts Added PackageManager type and integrated it into CliFlags, FlagPresence, and UserSelections interfaces
src/core/defaults.ts Added packageManager: 'npm' default selection
src/core/labels.ts Added packageManagerLabel() helper for UI display
src/cli/args.ts Implemented parsing for --package-manager=<value>, --pm <value>, and --yarn flags with proper validation
src/cli/prompts.ts Added package manager selection prompt in interactive flow
src/cli/output.ts Refactored command output helpers to generate package-manager-specific commands (npm vs yarn)
src/utils/exec.ts Added package manager parameter to install functions and command formatting
src/cli/index.ts Added package manager availability check and updated install flow to use selected package manager
test/args.test.ts Added comprehensive tests for package manager parsing, shortcuts, and edge cases
test/output.test.ts Added test for yarn command rendering in output
README.md Updated documentation with package manager option, flags, and usage example
CHANGELOG.md Added release notes for version 0.1.7

@alexmc2 alexmc2 merged commit 31d228b into main Feb 21, 2026
8 checks passed
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.

2 participants