Skip to content

feat(publish): Add --dry-run and --json flag to yarn npm publish#6850

Merged
arcanis merged 22 commits intoyarnpkg:masterfrom
Saadnajmi:publish-flags
Jul 31, 2025
Merged

feat(publish): Add --dry-run and --json flag to yarn npm publish#6850
arcanis merged 22 commits intoyarnpkg:masterfrom
Saadnajmi:publish-flags

Conversation

@Saadnajmi
Copy link
Contributor

@Saadnajmi Saadnajmi commented Jul 17, 2025

What's the problem this PR addresses?

Addresses #6849

How did you fix it?

Full disclosure, used Github Copilot Agent Mode to generate most of this PR here --> Saadnajmi#2
Since then, lots more manual edits on my side. I took some spirit from #3404 and pack.ts to determine how to print paths and when to call report.reportInfo vs report.reportJson.

This adds a couple of flags to yarn npm publish, so that it matches other package managers like pnpm and bun, and is thus easier for tools like nx release to use (see nrwl/nx#29242 ). We add

  • --dry-run (Bails out right before the final publish to NPM)
  • --json (This takes advantage of StreamReports JSON config)

Using both flags together looks something like this:

sanajmi@Mac foo % yarn npm publish --dry-run       
➤ YN0000: README.md
➤ YN0000: bar.js
➤ YN0000: package.json
➤ YN0000: xyz.js
➤ YN0000: [DRY RUN] Package would be published to https://registry.yarnpkg.com with tag latest
➤ YN0000: Done in 0s 13ms

sanajmi@Mac foo % yarn npm publish --dry-run --json
{"file":"README.md"}
{"file":"bar.js"}
{"file":"package.json"}
{"file":"xyz.js"}
{"name":"foo","version":"1.0.0","registry":"https://registry.yarnpkg.com","tag":"latest","files":["README.md","bar.js","package.json","xyz.js"],"access":null,"dryRun":true,"published":false,"message":"[DRY RUN] Package would be published to https://registry.yarnpkg.com with tag latest","provenance":false,"gitHead":"d4f82af6fdb7f2f81c5910535900c5ad8a70a019"}

Checklist

(TODO)

  • I have set the packages that need to be released for my changes to be effective.
  • I will check that all automated PR checks pass before the PR gets reviewed.

Copilot AI and others added 11 commits July 17, 2025 00:15
…lish

Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
…m publish

Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
…n paths

Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
…tion path

Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
…ny types

Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
… automatically

Co-authored-by: Saadnajmi <6722175+Saadnajmi@users.noreply.github.com>
@Saadnajmi Saadnajmi changed the title feat(publish): Add flags to match other package managers feat(publish): Add --dry-run and --json flag to yarn npm publish Jul 18, 2025
@Saadnajmi
Copy link
Contributor Author

I see test are failing because we print out multiple JSON objects instead of just one, which my tests expect. I'll do some conversation in the attached bug.

@arcanis arcanis merged commit 2677251 into yarnpkg:master Jul 31, 2025
26 checks passed
@arcanis
Copy link
Member

arcanis commented Jul 31, 2025

Thanks, @Saadnajmi!

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.

3 participants