Skip to content

feat(cli): add --format option for JSON output across list commands#14609

Merged
tknickman merged 5 commits intomainfrom
tknickman/cli-output-param
Jan 23, 2026
Merged

feat(cli): add --format option for JSON output across list commands#14609
tknickman merged 5 commits intomainfrom
tknickman/cli-output-param

Conversation

@tknickman
Copy link
Copy Markdown
Member

@tknickman tknickman commented Jan 13, 2026

Summary

  • Adds a standardized --format option (with -F shorthand) to multiple CLI commands for structured JSON output
  • Deprecates the --json flag in favor of --format=json for consistency
  • Includes a new output-format utility module for centralized format parsing and validation
  • Consolidates trackCliOptionFormat telemetry into base TelemetryClient class
  • Comprehensive test coverage for all affected commands with telemetry tracking

Commands Changed

Command Change Notes
alias ls Added --format New JSON output support
domains ls Added --format New JSON output support
env ls Added --format New JSON output support
inspect Added --format, deprecated --json Existing --json still works
list Added --format New JSON output support
logs Added --format, deprecated --json, --output Existing flags still work with deprecation warning
project ls Added --format, deprecated --json Existing --json still works
target ls Added --format New JSON output support
teams ls Added --format New JSON output support
upgrade Added --format, deprecated --json Existing --json still works
whoami Added --format New JSON output support

New Options

  • --format <FORMAT> / -F <FORMAT> - Specify output format (currently supports json)
  • All JSON output is formatted with 2-space indentation and can be piped directly to jq

Backward Compatibility

  • Deprecated --json flags continue to work and produce the same output
  • Deprecated --output flag on logs command continues to work
  • Users will see deprecation warnings when using old flags

Test plan

  • Run pnpm test in packages/cli to verify all unit tests pass
  • Test JSON output manually: vercel alias ls --format=json, vercel list --format=json, etc.
  • Verify backward compatibility with deprecated --json flag
  • Verify JSON output can be piped to jq without errors

🤖 Generated with Claude Code

@tknickman tknickman requested a review from a team as a code owner January 13, 2026 22:25
@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Jan 13, 2026

🦋 Changeset detected

Latest commit: fd29c8d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
vercel Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 13, 2026

📦 CLI Tarball Ready

The Vercel CLI tarball for this PR is now available!

Quick Test

You can test this PR's CLI directly by running:

npx https://vercel-cl52uo5jz.vercel.sh/tarballs/vercel.tgz --help

Use in vercel.json

To use this CLI version in your project builds, add to your vercel.json:

{
  "build": {
    "env": {
      "VERCEL_CLI_VERSION": "vercel@https://vercel-cl52uo5jz.vercel.sh/tarballs/vercel.tgz"
    }
  }
}

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 13, 2026

🧪 Unit Test Strategy

Comparing: 6888a3efd29c8d (view diff)

Strategy: Affected packages only

✅ Only testing packages that have been modified or depend on modified packages.

Affected packages - 1 (2%)
  1. vercel
Unaffected packages - 40 (98%)
  1. @vercel-internals/get-package-json
  2. @vercel/backends
  3. @vercel/build-utils
  4. @vercel/cervel
  5. @vercel/cli-auth
  6. @vercel/client
  7. @vercel/config
  8. @vercel/detect-agent
  9. @vercel/edge
  10. @vercel/elysia
  11. @vercel/error-utils
  12. @vercel/express
  13. @vercel/fastify
  14. @vercel/firewall
  15. @vercel/frameworks
  16. @vercel/fs-detectors
  17. @vercel/functions
  18. @vercel/gatsby-plugin-vercel-builder
  19. @vercel/go
  20. @vercel/h3
  21. @vercel/hono
  22. @vercel/hydrogen
  23. @vercel/introspection
  24. @vercel/koa
  25. @vercel/nestjs
  26. @vercel/next
  27. @vercel/node
  28. @vercel/oidc
  29. @vercel/oidc-aws-credentials-provider
  30. @vercel/python
  31. @vercel/python-analysis
  32. @vercel/redwood
  33. @vercel/related-projects
  34. @vercel/remix-builder
  35. @vercel/routing-utils
  36. @vercel/ruby
  37. @vercel/rust
  38. @vercel/static-build
  39. @vercel/static-config
  40. examples

Results

  • Unit tests: Only affected packages will run unit tests
  • E2E tests: Handled separately (Version Packages PRs or run-e2e-tests label)
  • Type checks: Only affected packages will run type checks

This comment is automatically generated based on the affected testing strategy

tknickman and others added 5 commits January 23, 2026 16:42
Adds a new standardized --format option to multiple CLI list commands (alias ls, domains ls, env ls, inspect, list, logs, project ls, target ls, teams ls, upgrade, whoami) to support structured JSON output. The --json flag is deprecated in favor of --format=json. Includes comprehensive test coverage and telemetry tracking.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Restore `--output` option in logs command as deprecated for backward compatibility
- Restore `trackCliOptionOutput` telemetry tracking for logs command
- Update target test to expect exit code 2 for invalid arguments (consistent with permissive parsing)
- Update logs tests to use `--format=json` instead of deprecated `-j` shorthand

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@tknickman tknickman merged commit 692058b into main Jan 23, 2026
120 checks passed
@tknickman tknickman deleted the tknickman/cli-output-param branch January 23, 2026 23:24
tknickman pushed a commit that referenced this pull request Jan 23, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## vercel@50.5.0

### Minor Changes

- New, consistent --format command for machine readable output
([#14609](#14609))

-   api command ([#14715](#14715))

- Detect Augment and OpenCode agents
([#14635](#14635))

### Patch Changes

- Track CLI as source for marketplace integration installations
([#14713](#14713))

- Do not show default project settings when framework is detected
([#14608](#14608))

- Fix flakey link tests caused by Inquirer type-ahead search
([#14716](#14716))

- Updated dependencies
\[[`64b4577b6d702335478af47c8395bf36daf4f311`](64b4577),
[`1ba97e3af1c1240703df3297fbbf7af0f809dd56`](1ba97e3)]:
    -   @vercel/python@6.3.1
    -   @vercel/detect-agent@1.1.0

## @vercel/detect-agent@1.1.0

### Minor Changes

- Detect Augment and OpenCode agents
([#14635](#14635))

## @vercel/python@6.3.1

### Patch Changes

- isInstalled check only needs to check for python on the path.
([#14712](#14712))

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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