What is @lerna/run?
@lerna/run is a part of the Lerna monorepo management toolset. It allows you to run scripts or commands across multiple packages in a monorepo, making it easier to manage and automate tasks in a multi-package repository.
What are @lerna/run's main functionalities?
Run npm scripts in all packages
This command runs the 'test' script in all packages that contain it. It's useful for ensuring that all packages pass their tests before a release.
lerna run test
Run npm scripts in specific packages
This command runs the 'build' script only in the package named 'my-package'. This is useful for targeting specific packages for certain tasks.
lerna run build --scope my-package
Run npm scripts with parallel execution
This command runs the 'lint' script in all packages in parallel, which can speed up the process significantly compared to running them sequentially.
lerna run lint --parallel
Run npm scripts with a specific concurrency
This command runs the 'test' script in all packages but limits the number of concurrent executions to 4. This can help manage resource usage on your machine.
lerna run test --concurrency 4
Other packages similar to @lerna/run
nx
Nx is a set of extensible dev tools for monorepos, which helps you develop like Google, Facebook, and Microsoft. It offers similar functionalities to Lerna, including running scripts across multiple packages, but also provides advanced features like dependency graph visualization and affected command execution.
rush
Rush is a scalable monorepo manager for the web, which helps you manage large repositories with many projects. It offers similar script running capabilities as Lerna but focuses more on build orchestration and dependency management.
3.0.0-beta.18 (2018-04-24)
Bug Fixes
- cli: Exit immediately when error is caught (5b01599), closes #1384
- diff: Diff since last release in branch, not most recent global tag (9879fef)
- git-utils: Pass --no-verify to
git push
(#1376) (0b88ffb), closes #1366 - git-utils: Pass
--follow-tags
to git push
(6907e90)
Features
- collect-updates: Copy remaining git utilities into module (cb9c19d)
- command: Move GitUtilities.isInitialized into class method (abecfcc)
- diff: Move diff-only git utilities (47dc0e2)
- Remove core/git-utils package (48096c4)
- filters: Add
--include-filtered-dependents
flag (#1393) (2838260) - git-utils: Devolve getCurrentSHA() to consumers (ecbc1d3)
- git-utils: Devolve getShortSHA() to consumers (95d179d)
- import: Inline GitUtilities.getWorkspaceRoot() (925080e)
- init: Inline GitUtilities.init() (6e401e1)
- publish: Move publish-only git utilities (5594749)
BREAKING CHANGES
- cli: Previously, lerna would accept
--scope
and --ignore
options where they were not intended,
despite logging the unexpected arguments correctly. This would result in the commands continuing to run with unexpected configuration.
Going forward, lerna will exit non-zero immediately upon encountering these errors.
@lerna/git-utils
is gone. Don't use it.- collect-updates: GitUtilities is going away soon.
- diff: Don't use GitUtilities.
- git-utils: Don't use GitUtilities!
- git-utils: Don't use GitUtilities.
- import: GitUtilities.getWorkspaceRoot no longer exists. You shouldn't be using GitUtilities.
- init: GitUtilities.init() no longer exists. You shouldn't be using GitUtilities.
- command: GitUtilities.isInitialized no longer exists. You shouldn't be using GitUtilities.
- publish: Many named exports of GitUtilities are no longer provided. Don't use GitUtilities, it's a bad pattern.
<a name="3.0.0-beta.17"></a>