DEV Community

Kinga
Kinga

Posted on • Edited on

1

rush dist:package

Rush global commands are invoked once for the entire repo.

See Custom commands for information on writing and using custom commands.

Publishing prerelease

Package all as prerelease

rush dist:package --include-all --prerelease `
  --package-command 'my-bulk-command' `
  --copy-command 'my-bulk-copyCommand'
# if your bulk command accepts parameters:
rush dist:package --include-all --prerelease `
  --package-command 'my-bulk-command --param1 --param2' `
  --copy-command 'my-bulk-copyCommand --param1 --param2'
# package only projects with version policy:
rush dist:package --include-all --prerelease --version-policy 'MyLibraries' `
  --package-command 'my-bulk-command' `
  --copy-command 'my-bulk-copyCommand --param1 --param2'
Enter fullscreen mode Exit fullscreen mode
  • retrieves a list of all projects managed by rush; if --version-policy is specified, selects all projects using the version policy
  • invokes bulk --package-command command
  • invokes bulk --copy-command (this command is optional)

This approach simplifies testing process, when a solution should be deployed to a testing environment before being released.

Package changed as prerelease

rush dist:package --prerelease `
  --package-command 'my-bulk-command'`
  --copy-command 'my-bulk-copyCommand'
# or, if your bulk command accepts parameters:
rush dist:package --prerelease `
  --package-command 'my-bulk-command --param1 --param2'`
   --copy-command 'my-bulk-copyCommand --param1 --param2'
Enter fullscreen mode Exit fullscreen mode
  • gets changed projects only
  • invokes bulk --package-command command
  • invokes bulk --copy-command (this command is optional)

How are changed projects detected in --prerelease?

Changed projects are detected using ProjectChangeAnalyzer.getChangedProjectsAsync which returns projects that have changed in the current state of the repo when compared to the specified branch.
If --target-branch is specified, it compares the checked out branch with the specified branch to determine which projects were changed. Otherwise, the checked out branch is compared against the main branch.

Publishing stable

Publish all as stable

Execute this command after rush version, to package and deploy release versions of the project.

# package all projects and copy the resulting files to specified location
rush dist:package --include-all `
  --package-command 'my-bulk-command' `
  --copy-command 'my-bulk-copyCommand'
# or, if your bulk commands accept parameters:
rush dist:package --include-all `
  --package-command 'my-bulk-command --param1 --param2' `
  --copy-command 'my-bulk-copyCommand --param1 --param2'
# package only projects with version policy:
rush dist:package --include-all --version-policy 'MyLibraries' `
  --package-command 'my-bulk-command' `
  --copy-command 'my-bulk-copyCommand'
Enter fullscreen mode Exit fullscreen mode
  • retrieves a list of all projects managed by rush; if --version-policy is specified, selects all projects using the version policy
  • regenerates CHANGELOG.md files in case CHANGELOG.json files have been manually updated afer rush version,
  • invokes bulk --package-command command
  • invokes bulk --copy-command (this command is optional)
  • tags the projects
  • saves new tag values in rush.json
  • commits CHANGELOG.md, CHANGELOG.json and rush.json files

Publish changed as stable

# package changed projects and copy the resulting files to specified location
rush dist:package `
  --package-command 'my-bulk-command' `
  --copy-command 'my-bulk-copyCommand'
# or, if your bulk command accepts parameters:
rush dist:package `
  --package-command 'my-bulk-command --param1 --param2' `
  --copy-command 'my-bulk-copyCommand --param1 --param2'
# package only projects with version policy:
rush dist:package --version-policy 'MyLibraries' `
  --package-command 'my-bulk-command' `
  --copy-command 'my-bulk-copyCommand'
Enter fullscreen mode Exit fullscreen mode
  • retrieves a list of changed projects comparing project's version with a published_v{versionNumber} tag,
  • regenerates CHANGELOG.md files in case CHANGELOG.json files have been manually updated afer rush version,
  • invokes bulk --package-command command
  • invokes bulk --copy-command (this command is optional)
  • tags changed projects
  • saves new tag value for changed projects to rush.json
  • commits CHANGELOG.md, CHANGELOG.json and rush.json files

How are changed projects detected?

Since the change files are deleted during rush version, rush dist:package detects changed projects by comparing versions in each project's package.json file with a project's tags in the rush.json file. If no appropriate tags are found in rush.json, the project will be published.

This command should be executed after rush version, to package and deploy release versions of the projects.

See the dist:package documentation on GitHub

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay