All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
6.0.2 (2022-11-02)
6.0.1 (2022-10-14)
6.0.0 (2022-10-12)
As of version 6.0.0, Lerna will now delegate the implementation details of the lerna run
command to the super fast, modern task-runner (powered by Nx) by default.
If for some reason you wish to opt in to the legacy task-runner implementation details (powered by p-map
and p-queue
), you can do so by setting "useNx": false
in your lerna.json. (Please let us know via a Github issue if you feel the need to do that, however, as in general the new task-runner should just work how you expect it to as a lerna user).
Interactive configurtion for lerna run
caching and task pipelines via the new lerna add-caching
command
When using the modern task-runner implementation described above, the way to get the most out of it is to tell it about the outputs of your various scripts, and also any relationships that exist between them (such as needing to run the build
script before the test
, for example).
Simply run lerna add-caching
and follow the instructions in order to generate all the relevant configuration for your workspace.
You can learn more about the configuration it generates here: https://lerna.js.org/docs/concepts/task-pipeline-configuration
By default the modern task runner powered by Nx will automatically load .env
files for you. You can set --load-env-files
to false if you want to disable this behavior for any reason.
For more details about what .env
files will be loaded by default please see: https://nx.dev/recipes/environment-variables/define-environment-variables
There are certain legacy options for lerna run
which are no longer applicable to the modern task-runner. Please see full details about those flags, and the reason behind their obselence, here:
https://lerna.js.org/docs/lerna6-obsolete-options
When configuration changes over time as new versions of a tool are published it can be tricky to keep up with the changes and sometimes it's possible to miss out on optimizations as a result.
When you run the new command lerna repair
, lerna will execute a series of code migrations/codemods which update your workspace to the latest and greatest best practices for workspace configuration.
The actual codemods which run will be added to over time, but for now one you might see run on your workspace is that it will remove any explicit "useNx": true
references from lerna.json files, because that is no longer necessary and it's cleaner not to have it.
We are really excited about this feature and how we can use it to help users keep their workspaces up to date.
6.0.0-alpha.2 (2022-10-12)
6.0.0-alpha.1 (2022-10-09)
6.0.0-alpha.0 (2022-10-07)
Note: Version bump only for package lerna-monorepo
5.6.2 (2022-10-09)
- bootstrap: reject-cycles when using workspaces (#3168) (8a47a6d)
- core: fix "cannot read property 'version' of undefined" for pnpm + independent versioning (#3358) (31e4c98)
- core: replace
"red"
color with"brightBlue"
on package's output prefix (#2774) (d7c1b87) - create: remove unused globby dep (#3360) (e873f0c)
- npm-publish: Allows disabling of strict SSL checks (#2952) (eec3207)
- run: always set env LERNA_PACKAGE_NAME environment variable (#3359) (012d31d)
5.6.1 (2022-09-30)
- add-caching: ensure lerna.json is configured automatically (9677cda)
5.6.0 (2022-09-29)
- core: add add-caching command (#3350) (ef09a06)
- repair: add lerna repair command (#3314) (7defab3)
- version: apply prettier to updated files, if applicable (#3348) (d63fc1f)
5.5.4 (2022-09-28)
Note: Version bump only for package lerna-monorepo
5.5.3 (2022-09-28)
5.5.2 (2022-09-20)
- run: missing
fs-extra
dependency declaration (#3332) (068830e) - run: warn on incompatible arguments with useNx (#3326) (ebf6542)
5.5.1 (2022-09-09)
- core: prevent validation error in version/publish with
workspace:
prefix (#3322) (746ce33) - run: exclude dependencies with --scope when nx.json is not present (#3316) (99a13a9)
5.5.0 (2022-08-31)
5.4.3 (2022-08-16)
5.4.2 (2022-08-14)
5.4.1 (2022-08-12)
- package-graph: ensure to touch all nodes (#3234) (f3c211d)
- properly update dependencies lockfile v2 (#3275) (d7c398b)
5.4.0 (2022-08-08)
- core: update nx version range base to latest (#3283) (241cdde)
- create: default test script no longer errors (#3266) (dfd30fa)
5.3.0 (2022-07-27)
- run-lifecycle: lifecycle events should run to completion in series (#3262) (2f51588)
- version: inherit stdio for lerna version lifecycle scripts (#3264) (9083a23)
5.2.0 (2022-07-22)
- prompt: update inquirer to v8.2.4 (80c17d8)
- add json schema for lerna.json (#3229) (5075eae)
- init: default useNx and useWorkspaces to true for new lerna workspaces (#3255) (a0e83e5)
- publish: disable legacy
verifyAccess
behavior by default (#3249) (94174c1)
5.1.8 (2022-07-07)
5.1.7 (2022-07-06)
5.1.6 (2022-06-24)
5.1.5 (2022-06-24)
5.1.4 (2022-06-15)
- correctly detect if target dependencies are set (5845f6b)
5.1.3 (2022-06-15)
- drastically reduce time taken to check for cycles (#2874) (4b81a98)
- properly update lockfile v2 (#3091) (1e07a88)
5.1.2 (2022-06-13)
- conventional-commits: remove pinned lodash.template (#3172) (e519f43)
- update all transitive inclusions of ansi-regex (#3166) (56eaa15)
5.1.1 (2022-06-09)
5.1.0 (2022-06-07)
- utils: orphaned child process on Windows (#3156) (7e69e9e)
- handle the edge cases in the lerna-nx integration (c6808fc)
- add experimental support to run tasks via Nx (1c35828)
5.0.0 (2022-05-24)
Lerna workspaces no longer have dependency deprecation warnings.
- replace read-package-tree with @npmcli/arborist (#3133) (f1c10a4)
- resolve most dependency audit issues (#3127) (2b3b191)
-
Node v10.x and v12.x are no longer supported.
- Please upgrade to the latest LTS release of Node (we recommend either v14 or v16).
-
Internally npm lifecycle scripts are now invoked using
@npmcli/run-script
instead ofnpm-lifecycle
in order to modernize the package and fix package vulnerabilities and deprecations.-
We are classing this as a breaking change because the APIs of
npm-lifecycle
and@npmcli/run-script
are significantly different, despite@npmcli/run-script
being the official successor tonpm-lifecycle
.We have successfully made the integration test suite we inherited pass with this change, but there may potentially be aspects related to it which are not covered by the tests and are breaking. If you encounter any issues you believe are related to this change please open a new issue with a dedicated reproduction for us to look into!
-
4.0.0 (2021-02-10)
- version: Ensure --create-release environment variables are present during initialization (2d0a97a)
- Improve accuracy of JSDoc type annotations (1ec69f0)
- create: Use main as default Github branch (1a951e9)
- import: Better handling of "Patch is empty" (#2588) (0497bc7)
- describe-ref: Add JSDoc types, remove test-only export (e5cf30c)
- package: Move Package.lazy() to static method (e52108e)
- child-process: Add JSDoc types (1840492)
- collect-uncommitted: Remove figgy-pudding (621b382)
- collect-updates: Add JSDoc type annotations to primary export (a4e7c78)
- conventional-commits: Add JSDoc types to named exports (81a591c)
- deps: @evocateur/libnpmaccess -> libnpmaccess@^4.0.1 (7974b35)
- deps: @evocateur/libnpmpublish -> libnpmpublish@^4.0.0 (341146e)
- deps: @evocateur/npm-registry-fetch -> npm-registry-fetch@^9.0.0 (6df42f2)
- deps: @evocateur/pacote -> pacote@^11.1.13 (99b4217)
- deps: @octokit/rest@^18.0.9 (f064a55)
- deps: @zkochan/cmd-shim -> cmd-shim@^4.0.2 (179e2c3)
- deps: Bump dependencies (affed1c)
- deps: byte-size@^7.0.0 (a1b2555)
- deps: camelcase -> yargs-parser/camelCase (d966e8b)
- deps: chalk@^4.1.0 (d2a9ed5)
- deps: conventional-changelog-core@^4.2.1 (54e2b98)
- deps: conventional-recommended-bump@^6.0.11 (4ff481c)
- deps: cosmiconfig@^7.0.0 (2958fe6)
- deps: dot-prop@^6.0.0 (5f31d3b)
- deps: execa@^4.1.0 (9051dca)
- deps: execa@^5.0.0 (d8100fd)
- deps: fs-extra@^9.0.1 (2f6f4e0)
- deps: get-port@^5.1.1 (b1b2275)
- deps: get-stream@^6.0.0 (ddf2ab5)
- deps: globby@^11.0.1 (6cb5bbe)
- deps: import-local@^3.0.2 (e0e74d4)
- deps: init-package-json@^2.0.1 (4042e8e)
- deps: inquirer@^7.3.3 (0b37795)
- deps: load-json-file@^6.2.0 (239f54b)
- deps: multimatch@^5.0.0 (0172526)
- deps: npm-package-arg@^8.1.0 (12c8923)
- deps: npm-packlist@^2.1.4 (c63fabd)
- deps: p-finally -> Promise.prototype.finally() (028db04)
- deps: p-finally@^2.0.1 (165e47e)
- deps: p-map-series@^2.1.0 (7f68076)
- deps: p-map@^4.0.0 (92b1364)
- deps: p-pipe@^3.1.0 (489f59e)
- deps: p-queue@^6.6.2 (ed76cdd)
- deps: p-reduce@^2.1.0 (fd4289a)
- deps: p-waterfall@^2.1.0 (7b7ea50)
- deps: path-exists@^4.0.0 (3fb6304)
- deps: pify@^5.0.0 (6b34452)
- deps: read-cmd-shim@^2.0.0 (9f78eee)
- deps: read-package-json@^3.0.0 (2a02865)
- deps: read-package-tree@^5.3.1 (3311780)
- deps: resolve-from@^5.0.0 (d414462)
- deps: rimraf@^3.0.2 (cda2e18)
- deps: semver@^7.3.2 (003ad66)
- deps: slash@^3.0.0 (5dec383)
- deps: ssri@^8.0.0 (41729b4)
- deps: tar@^6.0.5 (fce3e77)
- deps: temp-write@^4.0.0 (7bbfb70)
- deps: upath@^2.0.1 (28ecc48)
- deps: whatwg-url@^8.4.0 (5dfb7f0)
- deps: write-file-atomic@^3.0.3 (61f341b)
- deps: write-json-file@^4.3.0 (d552c53)
- deps: write-pkg@^4.0.0 (34db21c)
- deps: yargs@^16.1.1 (53d432b)
- filter-options: Remove figgy-pudding (7d90289)
- has-npm-version: Remove unused makePredicate() export (56cba2f)
- npm-dist-tag: Remove figgy-pudding (1158f8e)
- npm-publish: Remove figgy-pudding (bdc162d)
- otplease: Remove figgy-pudding (45ee52e)
- pack-directory: Remove figgy-pudding (640faa5)
- package: Improve JSDoc-inferred types, encapsulation (4d80c38)
- package-graph: Improve JSDoc-inferred types, encapsulation (fae9e8d)
- prerelease-id-from-version: Add JSDoc types (53cdad9)
- profiler: Remove figgy-pudding (69d4704)
- project: Add JSDoc type annotations to primary export (8443ad3)
- prompt: Add JSDoc types (0406568)
- prompt: Add unambiguous exports (46fa111)
- prompt: Remove ambiguous exports (42ab453)
- Consume named exports of sibling modules (63499e3)
- Expose named export (c1303f1)
- Remove default export (e2f1ec3)
- publish: Remove figgy-pudding (caf823e)
- query-graph: Remove figgy-pudding (3b0e2fe)
- run-lifecycle: Remove figgy-pudding (1093f87)
- run-topologically: Remove figgy-pudding (f3a73db)
- Drop support for Node v6.x & v8.x (ff4bb4d)
- prompt: The ambiguous 'confirm', 'select', and 'input' exports have been removed. Please use the renamed exports 'promptConfirmation', 'promptSelectOne', and 'promptTextInput' (respectively).
- has-npm-version: The makePredicate() export has been removed, memoization is now the responsibility of the caller.
- The default export has been removed, please use a named export instead.
- describe-ref: The test-only 'parse()' export has been removed.
- package: The
lazy
named export is now a proper static method ofPackage
. - Node v6.x & v8.x are no longer supported. Please upgrade to the latest LTS release.
Here's the gnarly one-liner I used to make these changes:
npx lerna exec --concurrency 1 --stream -- 'json -I -f package.json -e '"'"'this.engines=this.engines||{};this.engines.node=">= 10.18.0"'"'"
(requires npm i -g json
beforehand)
3.22.1 (2020-06-09)
3.22.0 (2020-05-24)
- conventional-commits: Support modern config builder functions (#2546) (7ffb297), closes #2138
- create: Use correct variable name in generated CLI output (#2547) (a1fd622)
- deps: upgrade octokit/enterprise-rest to v6 (#2464) (b44ea75)
- import: Support non-ASCII characters in file paths (#2441) (c74ffa4)
- publish: Avoid errors when files are ignored by git (#2445) (448f2ae), closes #2151
- publish: Avoid exception when publishing 1st version (#2485) (5d80285)
- publish: Support
--tag-version-prefix
in--canary
mode (#2435) (611c38e) - version:
--atomic
fallback whenGIT_REDIRECT_STDERR
is enabled (#2467) (c255d12)
- conventional-commits: Preserve major version zero on breaking changes (#2486) (6126e6c)
- version: add
--force-git-tag
option (#2594) (00738e9)
3.21.0 (2020-05-13)
- publish: Canary releases without previous tags should not explode (c9eb590)
- project: Add
getPackagesSync()
export (068bdd7) - version: Ignore private packages completely with
--no-private
(a9b9f97)
3.20.2 (2020-01-02)
3.20.1 (2019-12-29)
- version: Support git clients that do not support
git push --atomic
(2b9b210)
3.20.0 (2019-12-27)
- collect-dependents: Avoid skipping dependents of cyclic dependencies (#2380) (bd19a34)
- version: pass
--atomic
togit push
(#2393) (ec0f92a), closes #2392
- cli: Add new
info
command to output information about local environment (#2106) (7abfe43) - publish: Add
--legacy-auth
flag (#2347) (0e9bda7) - Add
--profile
option tolerna exec
andlerna run
(#2376) (6290174)
3.19.0 (2019-11-20)
3.18.5 (2019-11-20)
- Auto-fix prettier formatting (5344820)
- cli: Bump yargs to
^14.2.2
(51365b8) - command: Do not mutate
argv
parameter (8ca85a4), closes #2348 - conventional-commits: Ensure potential
ValidationError
ingetChangelogConfig()
is propagated correctly (406ba5a)
3.18.4 (2019-11-08)
- changed: Copy relevant options from version, do not inherit (6bd77ba)
- filter-options: Clarify
--since
description (b649b35) - filter-options: Ensure
--include-merged-tags
is available to all--since
-filterable commands (287bcd8), closes #2332 - version: Clarify
--include-merged-tags
description (b0bbfcf)
3.18.3 (2019-10-22)
- version: Correct warning message (384cd15)
- version: Workaround yargs bug with spurious
--
arguments (46be9dc), closes #2315
3.18.2 (2019-10-21)
3.18.1 (2019-10-15)
- npm-dist-tag: Port upstream npm/cli#235 (5a1d229)
- npm-dist-tag: Respect
npm_config_dry_run
env var (1fd5e18)
3.18.0 (2019-10-15)
- bootstrap: Move all filter logging into get-filtered-packages method (54dca56)
- options: Explicit
--conventional-graduate
(f73e6ed) - options: Explicit
--conventional-prerelease
(f3581ae) - options: Explicit
--force-local
(6948a11) - options: Explicit
--force-publish
(343a751) - options: Explicit
--ignore-prepublish
(fa21723) - options: Explicit
--ignore-scripts
(efcb3bd) - options: Explicit
--pre-dist-tag
(1d9552c) - options: Explicit
--use-workspaces
(ac8385d)
- filter-options: Add
--exclude-dependents
option (ff50e29), closes #2198 - filter-options: Allow command to continue if no packages are matched (#2280) (a706023)
- filter-options: Rename
--include-filtered-*
options (f2c3a92) - filter-options: Use figgy-pudding in getFilteredPackages() (73badee)
- Remove unused @lerna/batch-packages (d136fb5)
- Remove unused @lerna/run-parallel-batches (ec95403)
- Upgrade to yargs@14 (5e60213)
- package-graph: Deprecate method
pruneCycleNodes()
(ccf32e1)
3.17.0 (2019-10-10)
- link: Use
publishConfig.directory
as symlink source if it exists to allow linking sub-directories (#2274) (d04ce8e)
3.16.5 (2019-10-07)
- bootstrap: Run lifecycle scripts in topological queue instead of batches (#2224) (d8d33f7)
- child-process: Use Set to manage book-keeping instead of mutable integer (5dbea32)
3.16.4 (2019-07-24)
- conventional-commits: Avoid duplicate root changelog entries with custom
--tag-version-prefix
(8adeac1), closes #2197 - conventional-commits: Preserve tag prefix in fixed changelog comparison links (11cf6d2), closes #2197
- pack-directory: Use correct property when packing subdirectories (1575396)
- publish: Pass correct arguments to packDirectory() (b1aade3)
3.16.3 (2019-07-23)
- publish: Identify tagged packages correctly with custom
--tag-version-prefix
(f4cbd4d), closes #2195
3.16.2 (2019-07-22)
- create-symlink: Generate shims for missing bin scripts for Windows (c3f7998)
- create-symlink: Use octal notation for chmod values (03f80b7)
- deps:
npm-lifecycle@^3.1.2
(25edebf), closes #2189 - deps: Switch to actively-maintained
@zkochan/cmd-shim
(60d1100) - integration: Limit concurrency of bootstrap --hoist test (f25854d)
3.16.1 (2019-07-19)
3.16.0 (2019-07-18)
- command: Bump minimum range of lodash, silence dumb 'security' warning (c405871)
- conventional-commits: Hard-pin lodash.template dependency to silence 'helpful' security warning (c54ad68)
- deps: Bump
@evocateur/pacote
(03e4797) - deps: Update forked npm libs (4d67426)
- npm-conf: OTP should default to undefined, figgy pudding is very strict (2fa02a8)
- pack-directory: Bump npm-packlist + tar dependencies (59ebd19)
- package-graph: Flatten cycles to avoid skipping packages (#2185) (b335763)
- project: Ensure deprecated
githubRelease
config is also remapped fromcommand.publish
namespace (a3d264e), closes #2177 - publish: Add
--graph-type
option to control packages included in topological sort (#2152) (ae87669), closes #1437 - publish: Allow
--no-verify-access
to prevent checking for account-level 2FA (ce58d8f) - publish: OTP cache should be seeded from conf value, not CLI directly (cf56622)
- publish: Propagate root license into custom publish directories (d410a58), closes #2157
- bootstrap: Add
--strict
option to enable throwing when--hoist
warns (#2140) (91437b5) - deps:
@octokit/plugin-enterprise-rest@^3.6.1
(74a3890) - deps:
@octokit/rest@^16.28.4
(5f09f50) - deps:
byte-size@^5.0.1
(ed51ddd) - deps:
conventional-recommended-bump@^5.0.0
(2a0ed60) - deps:
fs-extra@^8.1.0
(313287f) - deps:
get-port@^4.2.0
(778ae6a) - deps:
glob-parent@^5.0.0
(c6bc218) - deps:
globby@^9.2.0
(d9aa249) - deps:
import-local@^2.0.0
(14d2c66) - deps:
is-ci@^2.0.0
(ab2ad83) - deps:
load-json-file@^5.3.0
(3718cc9) - deps:
multimatch@^3.0.0
(968b0d7) - deps:
p-map@^2.1.0
(9e58394) - deps:
pify@^4.0.1
(f8ee7e6) - deps:
semver@^6.2.0
(d8016d9) - deps:
slash@^2.0.0
(bedd6af) - deps:
write-json-file@^3.2.0
(4fa7dea) - listable: Output JSON adjacency list with
--graph
(9457a21), closes #1970 - otplease: Expose getOneTimePassword() helper (44b9f70)
- publish: Eager prompt for OTP when account-level 2FA is enabled (4f893d1)
- run-lifecycle: Upgrade
npm-lifecycle@^3.1.0
(e015a74)
3.15.0 (2019-06-09)
- deps: Consume forked npm libs (bdd4fa1)
3.14.2 (2019-06-09)
- bootstrap: Respect
--force-local
option (#2104) (c2fb639) - child-process: Ensure adjacent prefixes are always a different color (5a10146)
- npm-publish: Use generated manifest when publishing subdirectory (b922766), closes #2113
- publish: Allow per-leaf subdirectory publishing (ea861d9), closes #2109
- version: Remove unused dependency (285bd7e)
3.14.1 (2019-05-15)
3.14.0 (2019-05-14)
- add: Never pass filter options to nested bootstrap (9a5a29c), closes #1989
- run-lifecycle: Bump
npm-lifecycle
dependency to avoid noisy audit warning (ea7c20d)
- conventional-commits: Add conventional prerelease/graduation (#1991) (5d84b61), closes #1433 #1675
- dist-tag: Prompt for OTP when required (af870bb)
- exec: Add just-in-time queue management (23736e5)
- import: Add
--preserve-commit
option (#2079) (6a7448d) - link: generate shims for missing 'bin' scripts (#2059) (90acdde), closes #1444
- listable: Use QueryGraph.toposort() helper (84ce674)
- publish: Add
--otp
option (6fcbc36), closes #2076 - publish: Add just-in-time queue management (ae6471c)
- publish: Add OTP prompt during publish (#2084) (c56bda1), closes #1091
- publish: Display uncommitted changes when validation fails (#2066) (ea41fe9)
- query-graph: Add toposort() helper (90759c2)
- run: Add just-in-time queue management (#2045) (6eca172)
- run: Extract
@lerna/run-topologically
(3a8b175) - version: Add just-in-time queue management (290539b)
3.13.4 (2019-04-24)
- import: Avoid "unrecognized input" error from colors when using
--flatten
(#2037) (51625fa), closes #1644 - version: Resolve prerelease for version without bump (#2041) (aa11325)
- version: Search for complete tag prefix when composing GitHub releases (024a6ab), closes #2038
3.13.3 (2019-04-17)
- child-process: Centralize
exitCode
translation from string codes into numbers (09c0103), closes #2031 - docs: Add missing docs for
--tag-version-prefix
(#2035) (ff9c476), closes #1924 - exec: Handle node string error codes before setting process.exitCode (#2031) (c599c64)
3.13.2 (2019-04-08)
- lifecycles: Avoid duplicating 'rooted leaf' lifecycles (a7ad9b6)
3.13.1 (2019-02-26)
- deps: cosmiconfig ^5.1.0 (ed48950)
- deps: npm-packlist ^1.4.1 (aaf822e), closes #1932
- deps: pacote ^9.5.0 (cdc2e17)
- deps: Upgrade octokit libs (ea490cd)
- list: Restore empty
--json
array output when no results (2c925bd), closes #1945
3.13.0 (2019-02-15)
- conventional-commits: Bump conventional-changelog dependencies to pick up security fixes (d632d1b)
- listable: Output newline-delimited JSON with
--ndjson
(742781b) - meta: Add
repository.directory
field to package.json (aec5023) - meta: Normalize package.json
homepage
field (abeb4dc)
3.12.1 (2019-02-14)
- collect-updates: Do not skip change detection when
--since
provided (6ff53d6), closes #1927 - list: Do not emit empty stdout when there are no results (ba54439)
3.12.0 (2019-02-14)
- collect-updates: Clarify logging in context (9b8dd9c)
- conventional-commits: Improve logging during preset resolution (d4a16a5)
- publish: Check for git describe error explicitly (237d1c5)
- publish: Make the missing license warning clearer and more actionable (#1921) (8a71ac4)
- publish: Revert foolhardy refactoring (5e975e0) (a6733a2)
- version: Log message when git repository validation is skipped (2c40ffd)
- global-options: Default concurrency to logical CPU count (#1931) (2c487fe)
- publish: Add
--git-head
option to preserve gitlessfrom-package
metadata (3d18f2f), closes #1933 - publish: Allow
from-package
positional to run without a git repo (df49bfc), closes #1933 - version: Skip repository validation when git is unused (#1908) (b9e887e), closes #1869
3.11.1 (2019-02-11)
- version: Exit with an error when
--github-release
is combined with--no-changelog
(030de9d) - version: Passing
--no-changelog
should not disable root versioning (83c33a3)
3.11.0 (2019-02-08)
- collect-updates: Improve logging, making ignored globs explicit (42e4a5c)
- collect-updates: Match dotfiles when ignoring changes (99eadc6)
- create: Bump camelcase (e58a1d0)
- deps: Explicit libnpmaccess ^3.0.1 (6ba3d1d)
- deps: Explicit libnpmpublish ^1.1.1 (a506d96)
- deps: Explicit npm-lifecycle ^2.1.0 (506ad6d)
- deps: Explicit npm-package-arg ^6.1.0 (4b20791)
- deps: Explicit npm-registry-fetch ^3.9.0 (a83c487)
- deps: Explicit npmlog ^4.1.2 (571c2e2)
- deps: Explicit pacote ^9.4.1 (44d05bf)
- deps: Explicit read-package-json ^2.0.13 (2695a90)
- deps: Remove unused libnpm (replaced by direct sub-packages) (1caeb28)
- filter-options: Require arguments to --scope and --ignore (4b81dad)
- publish: Correct silly log heading (f1dc3fc)
3.10.8 (2019-02-01)
- conventional-commits: Support legacy callback presets (60647b4), closes #1896
- publish: Skip private package lookup (#1905) (f9e18fa)
- version: Fix negated option links in readme (0908212)
3.10.7 (2019-01-22)
- cli: Ensure exit code is always numeric (a2362b8)
- npm-publish: Ensure process exits non-zero when
libnpm/publish
fails (9e9ce08)
3.10.6 (2019-01-19)
- exec: Tweak description (68a0685)
- import: Ensure compatibility with root-level package globs (#1875) (16ab98d), closes #1872
- options: Document negated boolean options explicitly (8bc9669)
- package-graph: Ensure cycle paths are always names, not objects (ae81a76)
- package-graph: Use correct property when testing for duplicates (ef33cb7)
- publish: Map packument requests concurrently directly from package graph (c79a827)
- run: Re-order --npm-client in help output (bfa89bf)
3.10.5 (2019-01-11)
3.10.4 (2019-01-10)
- add: Do not scope chained bootstrap (d9d4bc4)
- bootstrap: Do not
npm ci
when hoisting (27516b9), closes #1865
3.10.3 (2019-01-10)
3.10.2 (2019-01-09)
3.10.1 (2019-01-09)
3.10.0 (2019-01-08)
- publish: Correctly determine canary version when
--include-merged-tags
present (fb2a1b2), closes #1820
- lerna: Use --exact version ranges between sibling dependencies (02a067f)
- version: Add
--no-changelog
option (#1854) (d73d823), closes #1852
3.9.1 (2019-01-08)
- bootstrap: Don't pass
--ignore-scripts
tonpm install
(e602838), closes #1855 - bootstrap: Prevent recursive execution from all install lifecycles (ea9dbbe)
3.9.0 (2019-01-08)
- bootstrap: Only run install lifecycles once-per-package, in topological order (929ae22)
- describe-ref: Properly handle sha-like tag names (#1853) (094a1cb)
- run-lifecycle: Ensure all npmpackage* env vars are created (bab8e58), closes #1752
- bootstrap: Add
--ignore-prepublish
option (f14fc06) - bootstrap: Run root install lifecycles where appropriate (944e36f)
3.8.5 (2019-01-05)
- npm-dist-tag: Improve robustness (63a7a89)
- npm-publish: Ensure pkg.publishConfig is handled correctly (1877def), closes #1498
- project: Deprecate root-level config keys as well, prioritizing nested (7a65a87)
- publish: Deprecate
--npm-tag
, replaced by--dist-tag
(196d663) - publish: Ensure pkg.publishConfig is handled correctly when promoting dist-tags (af1c2ad)
- publish: Tweak progress logging (5a04145)
3.8.4 (2019-01-03)
- publish: Pass username to access.lsPackages() (31982a1)
3.8.3 (2019-01-03)
3.8.2 (2019-01-03)
- bootstrap: Bail out of hoisted recursive lifecycles (169c943), closes #1125
- publish: Avoid recursive root lifecycle execution (e133134)
- publish: Run root prepublish lifecycle if it exists (c5676bb)
- run-lifecycle: Short-circuit ignore options (ae29097)
- version: Avoid recursive root lifecycle execution (089392d), closes #1844
3.8.1 (2018-12-31)
- Do not print duplicate stdio after a streaming command errors (#1832) (2bcc366), closes #1790
- npm-publish: Pass normalized manifest to libnpm/publish (8e59950), closes #1843
- progress: Correctly avoid progress where we don't want it (0de3df9)
- progress: Enable progress during logging setup, correcting default (da81e60)
- publish: --canary should also respect --include-merged-tags (462b15c), closes #1820
3.8.0 (2018-12-21)
- publish: Heighten dist-tag success log level to distinguish from noisy fetch logging (f1f0871)
- publish: Unhide options shared with version command (09fccd3)
3.7.2 (2018-12-21)
- pack-directory: Accept lazy Package, passing directory as second parameter (c6819c0)
- package: Add Package.lazy() helper (4aa9d37)
- package: Chain self from serialize() method for parity with refresh() (98c812c)
- publish: Re-order --git-reset flag in options (0653af9)
- publish: Remove unused --npm-client option (4e7eaef)
- symlink-binary: Use Package.lazy() instead of private resolver (83fe3ef)
- version: Prevent clobbering composed --yes option (f3816be)
3.7.1 (2018-12-20)
- bootstrap: Pulse progress bar during execution (b38a151)
- clean: Pulse progress bar during execution (f1202de)
- command: Enable progress from top-level log object (95e88f0)
- import: Pulse progress bar during execution (b552e22)
- npm-dist-tag: Accept opts.log, defaulting to libnpm/log (97edc7e)
- npm-publish: Accept opts.log, defaulting to libnpm/log (a1d61f6)
- pack-directory: Accept opts.log, defaulting to libnpm/log (d099d13)
- publish: Do not pass this.logger into conf, it does not respect log.level (9bcd503)
- publish: Pulse progress bar during execution (49b8771)
- Add pulse-till-done utility (3359c63)
- run-lifecycle: Accept opts.log, defaulting to libnpm/log (dde588a)
- run-lifecycle: Do not execute on packages that lack the target script, avoiding spurious logs (c0ad316)
3.7.0 (2018-12-19)
- add: Snapshot opts passed to pacote.manifest() (d0f0dbc)
- bootstrap: Use run-lifecycle factory instead of manual filtering (d32feaa)
- create: Pass options snapshot to pacote.manifest() (6116680)
- npm-conf: Port kevva/npm-conf/pull/12 (@zkochan) (d58b741)
- npm-conf: Update defaults & types to npm v6.5.0+ (6a8aa83)
- publish: Remove unused dependency (d4ab6c4)
- publish: Short-circuit retries for npm username validation (ca4dd95)
- run-lifecycle: Omit circular options from config (00eb5bd)
- Add @lerna/get-packed (8675c8f)
- Add @lerna/pack-directory (be1aeaf)
- dist-tag: Wrap options in figgy-pudding (2713ab8)
- npm-publish: Use libnpm/publish instead of subprocess execution (433275e)
- package: Add .refresh() method to update internal state when external changes have occurred (905ba10)
- publish: Add npm-session, npm-version, and user-agent fields to libnpm/fetch config (5edb27d)
- publish: Refresh package manifests after prepare/prepublishOnly lifecycle (e6b31f8)
- publish: Use @lerna/pack-directory instead of subprocess npm pack (fd7299f)
- publish: Use libnpm/publish instead of subprocess execution (58fda8d)
- version: Refresh package manifests after preversion lifecycle (7c7bf9a)
3.6.0 (2018-12-07)
- add: Validate local package version (#1804) (ed6e2db), closes #1799
- bootstrap: Omit local bundled dependencies (#1805) (8f5bdbb), closes #1775
- pkg: Exclude mocks from package tarball (4017f37)
- add: Add --no-bootstrap option (89bb928)
- bootstrap: Support
--force-local
option (#1807) (25572af), closes #1763 - Migrate existing usage to libnpm (0d3a786), closes #1767
- create: Migrate
npm info
subprocess to libnpm.manifest (65a1d1b) - listable: Add --toposort option (b387881), closes #1652
- npm-dist-tag: Use fetch API instead of CLI to make changes (54008c6)
- publish: Add a "from-package" positional argument (#1708) (16611be), closes #1648
- publish: Attempt profile retrieval before whoami endpoint during user validation (38097d8)
3.5.1 (2018-11-29)
3.5.0 (2018-11-27)
- conventional-commits: Bump minimum dependency ranges for node v11 compat (76fad65)
- prettier (001a6df)
- Update yarn workspaces error prompt link (#1756) (d6e6a42)
- publish: Ignore non-release tags when detecting
from-git
(#1782) (3cb7465) - version: Add friendly error message when remote branch doesn't exist (#1741) (cd34b48)
- version: Don't version private packages lacking a version field (#1654) (578bb19)
- publish: Add option
--no-git-reset
to leave unstaged changes in working tree (#1791) (eae5619) - run: Log package name and timing in runScriptInPackageCapturing (#1781) (b69a728)
- version: Add
--include-merged-tags
option (#1712) (7ee05d7)
3.4.3 (2018-10-10)
- publish: Use correct field name when limiting retries (76589d4)
3.4.2 (2018-10-09)
- publish: Prevent retries during access validation so third-party registries are skipped faster (a89ae62)
- publish: Use modern auth resolution (7ba41a6)
3.4.1 (2018-10-04)
- add: Allow --registry option (597606c)
- bootstrap: Constrain npm-conf argument object to options.registry only (987fd26)
- conventional-commits: Upgrade angular preset, ensure header is not duplicated (159a0b0), closes #1696
- conventional-commits: Upgrade dependencies (9752f3e), closes #1641 #1661
- npm-conf: Do not overwrite defaults with undefined cli keys (25af71d)
- publish: Overwrite Yarn registry proxy when encountered (f7fdc77)
- publish: Set token on npm config, allow third-party registries to remain non-compliant (06a9479)
3.4.0 (2018-09-14)
- publish: Use APIs for validation queries instead of CLI (65fc603)
3.3.2 (2018-09-12)
- publish: Allow
--force-publish
in a canary release (b97d9a3), closes #1638 - version: Allow
--force-publish
to work on tagged releases (7971bf3), closes #1667 #1671
3.3.1 (2018-09-11)
- create: Upgrade whatwg-url to ^7.0.0 (00842d6)
- import: Handle filepaths with spaces more robustly (#1655) (b084293)
- prompt: Upgrade inquirer to ^6.2.0 (ebb7ee4)
- publish: Tell yarn to stop creating git tags (2a6f0a4), closes #1662
- run-lifecycle: Remove repetitive error logging (b8915e7)
3.3.0 (2018-09-06)
- describe-ref: Fallback refCount is the number of commits since beginning of repository (6dfea52)
- Propagate exit codes from failed executions (af9c70b), closes #1374 #1653
- run-lifecycle: Propagate exit code when execution fails (4763f95), closes #1495
- deps: Upgrade execa to ^1.0.0 (748ae4e)
- deps: Upgrade fs-extra to ^7.0.0 (042b1a3)
- deps: Upgrade get-stream to ^4.0.0 (e280d1d)
- deps: Upgrade strong-log-transformer to ^2.0.0 (42b18a1)
3.2.1 (2018-08-28)
3.2.0 (2018-08-28)
- add: Order short flags first in help output, clarify description (8efb549)
- publish: Call synthetic prepublishOnly lifecycle before packing (dda9812), closes #1169
- version: Make changes to packages in batched topological order (d799fbf)
- version: Skip working tree validation when
--no-git-tag-version
passed (bd948cc), closes #1613
- add: Add examples to
--help
output (#1612) (2ab62c1), closes #1608 - cli: Configure commands in root package, all other bits in cli package (7200fd0), closes #1584
- npm-publish: Resolve target package to aid chaining (928a707)
- npm-publish: Store entire tarball metadata object on Package instances (063d743)
- publish: Support prepack/postpack lifecycle in root manifest (9df88a4)
- run-lifecycle: Resolve target package to aid chaining (8e0aa96)
3.1.4 (2018-08-21)
3.1.3 (2018-08-21)
- add: Avoid passing bad scope to pacote (ad649bf), closes #1592
- global-options: Move env defaults to command superclass (6d8e405), closes #1449
3.1.2 (2018-08-20)
- Setup instance.filteredPackages explicitly (32357f8)
- Use packageGraph.rawPackageList instead of misleading instance.filteredPackages (2e2abdc)
- bootstrap: Remove redundant duplicate name check (c2405a1)
- command: Remove redundant filteredPackages calculation (e0a361f)
- filter-options: Move filterPackages logic into named export (e863c28)
- package-graph: Throw errors when package names are not unique (387df2b)
- publish: Allow composed version command to decide when to verify working tree (e61aa67)
3.1.1 (2018-08-17)
- add: Compose bootstrap to avoid extra logs (3c534eb)
- add: Use
pacote
to resolve third-party registry authentication woes (a0fbf46), closes #1572 #1539
3.1.0 (2018-08-17)
- collect-updates: Report no changes when on a release commit (082d876), closes #1548
- command: Detect composed commands more accurately (1e51b39)
- command: Log lerna CLI version with less ambiguity (67494e7)
- publish: Throw errors if --canary attempted on unclean tree or tagged release (5da0e42)
- version: Throw errors if tree is unclean or duplicating tagged release (d8ee1cf)
- Create
[@lerna](https://github.com/lerna)/check-working-tree
(98cd41f) - Create
[@lerna](https://github.com/lerna)/describe-ref
(8c11b75)
3.0.6 (2018-08-16)
- command: Silence goalpost logging when running a composed command (12b4280)
- create: Use whatwg-url instead of node 8.x-dependent URL class (8701b79)
- init: Consume lernaVersion from options, not instance property (89e31d2)
- npm-publish: Tip-toe around logging when emitting chunk to stdout (c027246)
- version: Pass --preid to selection prompt (23a30a0), closes #1214
- version: Prioritize
--preid
over existing prerelease ID (#1568) (f2c470a)
3.0.5 (2018-08-15)
- collect-updates: Remove period from committish log message (a97262c)
- filter-options: Allow --private to be configured from file (21e134c)
- global-options: Allow --sort to be configured from file (f4aed75)
- help: Insert line break before describing boolean negations (da2f886)
- options: Provide -y alias for --yes (3ea460c)
- publish: Add confirmation prompt before execution (47766e5), closes #1566
- publish: Get tagged packages from merge commit (#1567) (fc771d9)
- version: Log skipped publish when composed (89645b7)
3.0.4 (2018-08-14)
- publish: Do not ping third-party registries (42f4fdd), closes #1560
- publish: Only pass
--json
tonpm pack
when npm >= 5.10.0 (71babce), closes #1558 - publish: Run publish from leaf nodes again (3d348ec), closes #1560
3.0.3 (2018-08-11)
3.0.2 (2018-08-11)
- conventional-commits: Pass --tag-version-prefix to changelog utilities (8ed7d83)
- conventional-commits: Provide fallback bump when releaseType is missing (e330f6f), closes #1551
- exec: Allow config files to override defaults (2335149)
- publish: Add default for --tag-version-prefix (f159442)
- publish: Allow disabling of registry and package verification (0bfdff5), closes #1552
- run: Allow config files to override defaults (f15b6fb)
- version: Allow config files to override defaults (bb1cfb5)
- version: Positional bump supersedes
--conventional-commits
when choosing version (a74c866)
3.0.1 (2018-08-10)
- publish: Allow unpublished packages to pass access verification (3a7348c)
3.0.0 (2018-08-10)
- add: Always use POSIX paths when computing relative file: specifiers (ffe354f)
- add: Support explicit & implicit relative file: specifiers (41f231f)
- create: Use filename without scope when generating imports from test file (acfd48b)
- publish: Improve
npm pack
experience (627cfc2)
- changed: Support list output options (6ecdd83)
- list: Extract @lerna/listable utility (bf56018)
- list: Improve scriptability with several new options (2e204af)
- npm-publish: Add npmPack export (088ea54)
- package: Add tarball property (be453cd)
- publish: Run
npm pack
beforenpm publish
(8d80b2c) - publish: Validate npm registry and package access prerequisites (ebc8ba6), closes #55 #1045 #1347
- Add @lerna/log-packed module, extracted from npm (9c767ac)
- Split
lerna version
from oflerna publish
(#1522) (8b97394), closes #277 #936 #956 #961 #1056 #1118 #1385 #1483 #1494
-
changed: The package names emitted to stdout are no longer prefixed by a "- ", and private packages are no longer displayed by default.
-
list: The default output of
lerna ls
no longer shows version strings or private packages. -
The new alias
lerna la
resembles the old output, with the addition of relative path to the package -
The new alias
lerna ll
is a shortcut for the new--long
option -
A new
--parseable
option has been added to aid magical piping incantations -
--preid
now defaults to "alpha" during prereleases:
The previous default for this option was undefined, which led to an awkward "1.0.1-0" result when passed to
semver.inc()
.The new default "alpha" yields a much more useful "1.0.1-alpha.0" result. Any previous prerelease ID will be preserved, just as it was before.
-
--no-verify
is no longer passed togit commit
by default, but controlled by the new--commit-hooks
option:The previous behavior was too overzealous, and the new option operates exactly like the corresponding npm version option of the same name.
As long as your pre-commit hooks are properly scoped to ignore changes in package.json files, this change should not affect you. If that is not the case, you may pass
--no-commit-hooks
to restore the previous behavior.
3.0.0-rc.0 (2018-07-27)
- changed: Clarify early exit log message (b132c3a)
- cli: Pass global defaults into option factory instead of yargs.config() (cf4008a), closes #1449
- command: Prevent premature resolution during tests from nested commands (151363f)
- core/package: Serialize hosted git URLs with original protocol/shorthand (60ff432), closes #1499
- project: Report syntax errors in root package.json (f674f35), closes #1452
- publish: Add default description 'npm' for --npm-client (649048c)
- publish: Avoid fs-extra warning on 32-bit machines (e908d23)
- publish: Do not leave unstaged changes with --skip-git (2d497ed)
- publish: Exit early when publishing w/o commits (#1453) (6cbae35), closes #773
- publish: Pass --repo-version argument through semver.valid() (272e9f1), closes #1483
- publish: Update lerna.json version after root preversion lifecycle (7b3817c), closes #1495
- tests: Special handling for Windows CI issues (#1441) (1a01125)
- collect-updates: Make argument signature explicit (e6ba19f)
- command: Do not store raw packages list as instance property (32a211a)
- Add description from --help summary [skip ci] (9b65d8e)
- Count packages affected in command summary logging (5f5e585)
- publish: Ensure published packages contain a LICENSE file (#1465) (5863564), closes #1213
- Upgrade to fs-extra 6 (079d873)
- add: Add
--exact
option tolerna add
(#1478) (346d156), closes #1470 - cli: Upgrade to Yargs 12 (7899ab8)
- command: Remove .defaultOptions() from option resolution stack (2b27a54)
- ls: Log number of packages listed (855fff6)
- package-graph: Add
rawPackageList
getter (0ad5faf) - project: Move collect-packages into getPackages() method (06b88d4)
- publish: Add --require-scripts option to opt-in to raw JS lifecycle scripts (054392b)
- publish: Add
--amend
flag (#1422) (ef5f0db) - run-lifecycle: Encapsulate npm-conf with createRunner() factory (488f98d)
- publish: External
$PKGDIR/scripts/{pre,post}publish.js
lifecycles are now opt-in instead of automatic. Pass--require-scripts
explicitly to restore previous functionality. - collect-updates: Instead of an opaque command instance, distinct positional arguments are required.
- command:
this.packages
no longer exists in Command subclasses, usethis.packageGraph.rawPackageList
3.0.0-beta.21 (2018-05-12)
- child-process: Prevent duplicate logs when any package-oriented execution fails (d3a8128)
3.0.0-beta.20 (2018-05-07)
3.0.0-beta.19 (2018-05-03)
- add: Configure
--dev
as boolean option (#1390) (75b91bd) - collect-updates: Derive most recent tag from annotated tags only (90df646)
- collect-updates: Remove redundant short-circuit (#1406) (2bcdd35)
- publish: Include all packages during global major bump (#1391) (9cebed1), closes #1383
- project: Map deprecated config to new namespaces (4da6318)
- collect-updates: Lightweight tags are no longer included when detecting changes since the last release.
3.0.0-beta.18 (2018-04-24)
- 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
togit push
(6907e90)
- 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)
- 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.
3.0.0-beta.17 (2018-04-13)
- bootstrap: Pass npm-conf to feature predicate instead of directly reading process.env (b4af3c9)
- bootstrap: Pluralize log text (#1232) (5c74760)
- package: Resolve correct relative spec (ec2b8f5)
- add: Use directory globs to filter targeted packages (39fa7b6)
- link: Add 'convert' subcommand to aid migration to local file: specifiers (f59bf3c)
- add:
lerna add
now only supports adding one dependency at a time. It is much more valuable to filter by directory globs, anyway.
3.0.0-beta.16 (2018-04-10)
- import: Rebase patch copies, too (f6bae80)
3.0.0-beta.15 (2018-04-09)
- project: Pin --exact require-from-string v2.0.1 to avoid integrity error with v2.0.2 (32a38ad)
- publish: Allow tag check to fail with strong warning (#1355) (f5268cd)
- bootstrap: Use
npm ci
with--ci
option (#1360) (d7e33c6) - conventional-commits: Support local file presets (a1bff40)
3.0.0-beta.14 (2018-04-03)
- create: Actually publish the module data helper (4775cc4)
- logging: Log failures from package scripts once, not twice (436cfe1)
- publish: Ensure optionalDependencies are updated during publish to registry (559b731)
3.0.0-beta.13 (2018-03-31)
- child-process: Do not merge lines of streaming stderr (59dc2d4), closes #994
- Use ValidationError instead of Error (bea6bc3)
- run: Exit early when no packages contain the targeted lifecycle (c8a5526)
- Enable progress bars only when necessary (b766c83)
3.0.0-beta.12 (2018-03-30)
- create: Silently ignore missing builtin npmrc (1523520), closes #1353
- npm-conf: Replace env vars even in config keys (3c9a5de)
- package: Add
serialize()
method (fdec3ac) - package: Add Map-like get/set methods, remove raw json getter (707d1f0)
- project: Merge
package
andpackageJson
intomanifest
(9a47ff7) - Add --no-prefix for streaming output (#1352) (36c1fad)
- package: The
Package
class no longer provides direct access to the JSON object used to construct the instance. Map-likeget()
/set(val)
methods are available to modify the internal representation.
3.0.0-beta.11 (2018-03-29)
- exec: Clarify --no-bail option (6e4c6fd)
- publish: Write temporary annotations once, not repeatedly (6abae76)
- bootstrap: Inherit stdio during root-only install (fd8c391)
- bootstrap: Short-circuit when local file: specifiers are detected in the root (d8a8f03)
- child-process: Allow exec() opts.stdio override (fd84013)
- npm-install: Allow opts.stdio override (4ba5e74)
- Execute atomic publish lifecycle during lerna publish (#1348) (45efa24)
- Support
optionalDependencies
(b73e19d), closes #121 - npm-run-script: Accept opts.reject (7c5a791)
- run: Add --no-bail option (893fcc8), closes #1351
3.0.0-beta.10 (2018-03-27)
- add: Use bootstrap factory, not handler (dbfc891)
- commands: Delay require of command instantiation (a1284f3)
- project: Inherit configuration with yargs-like "extends" (0b28ef5), closes #1281
- commands: The default export of command packages is now a factory, not the subclass (which is now a named export).
3.0.0-beta.9 (2018-03-24)
- filter-options: Move include/exclude validation into filter-packages (503251d)
- git-utils: Remove unused methods, stop mocking tests (3e00d7a)
- publish: Split
--skip-*
properly, leave working tree clean (5b4b2c9)
- command: Remove legacy config handling (d305a38)
- command: Rename this.repository -> this.project (43e98a0)
- project: Normalize config.commands -> config.command (24e55e3)
- project: Use cosmiconfig to locate and read lerna.json (b8c2789)
- publish: Previously, gitHead annotations were leftover if
--skip-npm
was passed, despite no actual requirement for that property when no publishing is going on.
Now, all publish-related operations are truly skipped with --skip-npm
,
and all git commit/push-related operations are skipped with --skip-git
.
Passing --skip-npm
will now also always push to remote, which represents
a breaking change from 2.x behavior.
Thanks @KingScooty for raising the issue!
- command: lerna.json
bootstrapConfig
andpublishConfig
namespaces are no longer honored. These config blocks should be moved tocommand.bootstrap
andcommand.publish
, respectively.
3.0.0-beta.8 (2018-03-22)
- add: Support tag and version specifiers (5df0fc8), closes #1306
- create: Skip repository property when git remote is missing (98c8be6)
- init: Improve ex-nihilo output (7b80e07)
- npm-conf: Add get/setCredentialsByURI() methods (ad20d8a)
- utils: Add "vendored" npm-conf (9c24a25)
- utils: Add @lerna/map-to-registry (ce72828)
3.0.0-beta.7 (2018-03-20)
- cli: Retrieve correct version (bb2c5e8)
3.0.0-beta.6 (2018-03-19)
Note: Version bump only for package lerna
3.0.0-beta.5 (2018-03-19)
3.0.0-beta.4 (2018-03-19)
- clean-stack: Try to avoid causing errors during error cleanup (89f9d3b)
- Respect durable hoist configuration (2081640), closes #1325
- Use correct instance property override (9249221)
3.0.0-beta.3 (2018-03-15)
- utils: Use safe relative path when calling git diff (#1323) (619c477)
- ci option should not be visible in help output (580b2d5)
- fs-extra dependency is a caret range, not exact (81556d0)
- Check for upstream changes before attempting to publish (#1317) (cef0a69)
- cli: Set config.ci from env var (5452293)
- global-options: Add hidden
ci
option (86a4d65) - Upstream changes warn in CI, throw locally (4de055d), closes #1177 #1317
- publish: Add logging when
--skip-git
or--skip-npm
are passed (#1319) (8eef9ff)
3.0.0-beta.2 (2018-03-10)
- Move
@lerna/has-dependency-installed
intocommands/bootstrap/lib
(c09ccbd)
- Rename
@lerna/fs-utils
=>@lerna/rimraf-dir
(30451ed) - Replace
@lerna/fs-utils
dependency withfs-extra
(9c35a86) - Replace
@lerna/match-package-name
withmultimatch
(423f82c) - filter-packages: Simplify method signature (47e1c86)
- filter-packages: The parameters to
filterPackages()
have changed:- Two lists (
include
,exclude
) have replaced the destructured config object
- Two lists (
3.0.0-beta.1 (2018-03-09)
- conventional-commits: output version bump message closer to version heading (64916d6)
- filter-options: require a git repo when using --since (d21b66e), closes #822
- init: lerna init does not, in fact, require git (d1d69c7)
- publish: Checkout manifest changes serially (ce4a4b1)
- publish: default root manifest name when missing (a504d7e), closes #1305
- publish: guard against undefined tag (d8ce253), closes #1311
- publish: Respect pkg.publishConfig.tag (04b256a), closes #1311
- publish: work around yarn "link:" intransigency (ddfb517)
- collect-packages: simplify signature (39170cf)
- diff: filter diff output with --ignore-changes (c27c2e0)
- filter-options: Exclude private packages with --no-private (6674d18)
- collect-packages: Formerly a config object, it is now two parameters, only the first of
which (rootPath) is required. The second parameter is a list of package
location globs, defaulting to lerna's default of
["packages/*"]
.
This is the first lerna
release published by lerna
itself. 🎉
-
#1307 Convert
lerna/lerna
into alerna
-based monorepo. (@evocateur) -
Rename
lerna publish
flag--ignore
to--ignore-changes
(8c92956)This resolves previous ambiguity as to what exactly was intended by the "ignore" config for lerna publish, which was not intended to be identical to the filtering option
--ignore
.The old option will still work when found in
lerna.json
config, but it is recommended to migrate to the new option name to ensure future compatibility.
- #1310 Add gitHead property to package.json before publish. (@evocateur)
- Daniel Stockman (evocateur)
- #1302 Use npm-lifecycle to run solitary lifecycle phases. (@evocateur)
- #1300 Disable all non-error logging when stdout is piped. (@evocateur)
- Daniel Stockman (evocateur)
- Disable progress in commands that only output lists (e91c9f2c)
- #1278 Add universal hosted git URL support. (@evocateur)
- #1289 Convert command lifecycle from callbacks to Promises. (@evocateur)
- #1290 Preserve package.json structure during bootstrap mangling. (@evocateur) Thanks to @compulim for the initial PR!
- #1271 Split symlink methods out of FileSystemUtilities. (@evocateur, @compulim)
- Tons of other refactoring afoot! Check out this diff.
- Daniel Stockman (evocateur)
#1122
Use local lerna if available. (@marionebl)#1207
Refactor command superclass and yargs handlers. (@evocateur)#1208
Use CommonJS. (@evocateur)#1209
Drop support for node v4. (@evocateur)#1211
Bump major versions of dependencies. (@evocateur)#1225
Remove lerna.json compatibility check. (@evocateur)#1226
Remove all deprecated validations. (@evocateur)#1234
Upgrade to yargs 11. (@evocateur)
#1212
Throw friendly error when workspaces are not configured correctly. (@craigbilner)#1227
Add--ignore-scripts
flag to bootstrap command. (@Andarist)#1254
Add support for new yarn workspaces config format. (@detrohutt)#1261
Refactor publish command to be 98% async. (@evocateur)#1262
Rewrite npm5file:
links during publish. (@evocateur)
#1219
Avoid triggering pre-commit and commitmsg hooks during publish. (@alan-agius4)#1220
Remove--no-gpg-sign
fromgit commit
. (@evocateur)
#1248
Document another potential cause of git initialization failure. (@fritz-c)#1250
Add guide for debugging Jest tests with VS Code. (@millermatt)
#1210
Upgrade to Jest v22. (@evocateur)#1224
Remove explicitglob
dependency in favor ofglobby
. (@wtgtybhertgeghgtwtg)#1260
PackageGraph
is aMap
, its nodes store relationships in aSet
. (@evocateur)#1266
SplitPackageUtilities
into smaller files. (@evocateur)#1267
SplitNpmUtilities
into smaller files. (@evocateur)
- Alan Agius (alan-agius4)
- Alexander Roberts (detrohutt)
- Craig Bilner (craigbilner)
- Daniel Stockman (evocateur)
- Fritz (fritz-c)
- Mario Nebl (marionebl)
- Mateusz Burzyński (Andarist)
- Matt Miller (millermatt)
- wtgtybhertgeghgtwtg
- #1205 Add %v as placeholder for raw version in
--message
. (@mojavelinux)
- #1206 Avoid dropping early logs below default level. (@evocateur)
- Dan Allen (mojavelinux)
- Daniel Stockman (evocateur)
- #1194 Treat 'lerna run test' like any other command. (@tkrotoff)
- #1199 Fix import command so it works if Lerna root is a subdir of git root. (@RoystonS)
- #1204 Avoid interactive prompt during yarn publish. (@evocateur)
- #1140 Warn user and exit non-zero if command is invalid. (@cezaraugusto)
- #1145 run/publish: Use npmClient instead of hardcoded npm. (@oreporan)
- #1149 Add support for root-level version lifecycle. (@bigtimebuddy)
- #1187 Completely ignore peerDependencies during publish. (@evocateur)
- #1193 Throw error when lerna.json or package.json have invalid syntax. (@evocateur)
- #1164 docs: replace "command" with "commands" to avoid ambiguity. (@fengyuanchen)
- #1186 docs: 📇 Add private registry tips to troubleshooting.md. (@frankstallone)
- #1188 Prettier. (@evocateur)
- Alan Agius (alan-agius4)
- Cezar Augusto (cezaraugusto)
- Chen Fengyuan (fengyuanchen)
- Daniel Stockman (evocateur)
- Frank Stallone (frankstallone)
- Matt Karl (bigtimebuddy)
- Ore Poran (oreporan)
Happy 2018! 🎉
- #1110 Add
--stream
option tolerna exec
. (@alan-agius4) - #1111 Add
--changelog-preset
option to customize--conventional-commits
output. (@alan-agius4)
- #1134 Normalize path used for
git add
in respect to OS/environment. (@zenflow) - #1129 Throw error in bootstrap when Yarn workspaces is misconfigured. (@evocateur)
- #1101 Set chmod for linked binaries. (@marionebl)
- #1112 Use all
packages
locations when resetting canary changes. (@jwickens) - #1115 Keep non-patch subject parts when importing repository. (@koenpunt)
- #1139 add docs on how to publish scoped packages. (@cezaraugusto)
- #1108 Minor typo fix in hoist.md. (@tdmalone)
- #1166 fix: typo in README.md "in in". (@vladgolubev)
- #1176 Fix typo in README.md. (@LoicPoullain)
- Alan Agius (alan-agius4)
- Cezar Augusto (cezaraugusto)
- Daniel Stockman (evocateur)
- Jonathan R Wickens (jwickens)
- Koen Punt (koenpunt)
- Loïc Poullain (LoicPoullain)
- Mario Nebl (marionebl)
- Matthew Francis Brunetti (zenflow)
- Tim Malone (tdmalone)
- Vlad Holubiev (vladgolubev)
A quick bugfix for an overlooked case in lerna add
.
- #1100 Preserve existing deps with lerna add. (@marionebl)
- Mario Nebl (marionebl)
A new command (lerna add
), new flags for bootstrap and link commands, and a much-improved experience when publishing "final" releases after a series of prereleases!
- #1069 Implement
lerna add <pkg>[@version] [--dev]
. (@marionebl) - #1077 Republish prereleased packages during subsequent non-prerelease publish. (@spudly)
- #1078 Generate root changelog in fixed mode. (@ZauberNerd)
- #1081 Warn during bootstrap when two or more packages have the same package.json name. (@amfio)
- #1082 Add --force-local to link command. (@jiverson)
- #1087 Add --reject-cycles to bootstrap, logging packages when found. (@mitchhentges)
- #1059 Improve "import" edgecases + (i18n fixes + git tweaks). (@swernerx)
- #1063 Fail when --hoist and --yarn are used together. (@marionebl)
- #1083 Fixed diffing on Windows. (@the0neWhoKnocks)
- #1062 Fix README typo. (@imagentleman)
- #1080 Add test for skipping empty patches during import --flatten. (@gyoshev)
- #1092 Make integration tests less flaky on Windows. (@evocateur)
- Alex Gyoshev (gyoshev)
- Alexander Field (amfio)
- Björn Brauer (ZauberNerd)
- Daniel Stockman (evocateur)
- Josh Iverson (jiverson)
- José Antonio Chio (imagentleman)
- Mario Nebl (marionebl)
- Mitchell Hentges (mitchhentges)
- Sebastian Werner (swernerx)
- Stephen John Sorensen (spudly)
- the0neWhoKnocks
I inadvertently made lerna bootstrap --hoist
really slow in v2.3.0, so that's fixed. Big thanks to all the contributors!
- #1033 Add support for git-hosted urls as sibling package dependencies. (@gustaff-weldon)
- #1044 Throw publish validation errors before version selection. (@evocateur)
- #1047 Remove git requirement from link command. (@jiverson)
- #1051 When hoisting, only install with --global-style in leaf nodes, not root. (@evocateur)
- #1054 Set
process.exitCode
instead of callingprocess.exit(code)
. (@evocateur)
- #1048 Clean up code missed by lint settings. (@jiverson)
- #1052 Truncate stack (or pass directly) when logging errors. (@evocateur)
- Daniel Stockman (evocateur)
- Good stuff and well done! (gustaff-weldon)
- Josh Iverson (jiverson)
- nhducit (nhducit)
This is what happens when you forget to pull from upstream before publishing.
- #1025 Log which packages are throwing ECYCLE error. (@FezVrasta)
- Federico Zivolo (FezVrasta)
New options for lerna import
and lerna publish
, set --loglevel
from lerna.json, and more!
- #1019 Add
--flatten
option to use when merge conflicts cannot be imported. (@dmaksimovic) - #1026 Add
--allow-branch
option to restrict publish to designated branches. (@FaHeymann) - #1029 Call version lifecycle scripts during publish. (@cwmoo740)
- #1030 Add runScriptSync for use in version lifecycle methods. (@cwmoo740)
- #1020 Use
--canary=<value>
as prerelease tag, not commit-ish. (@achingbrain) - #1037 Support durable
--loglevel
config from lerna.json. (@evocateur) - #1041 Pass npmClientArgs to yarn workspaces install command. (@evocateur)
- #1038 Rename
npmPublishAsPrerelease
tonpmPublish
to avoid confusion. (@Hypnosphi)
- Alex Potsides (achingbrain)
- Daniel Stockman (evocateur)
- Darko Maksimovic (dmaksimovic)
- Fabian Heymann (FaHeymann)
- Filipp Riabchun (Hypnosphi)
- Jeffrey Young (cwmoo740)
- Steve Mao (stevemao)
A new command, tweaks to logging and init scaffolding, and documentation!
- #970 Create configured "packages" directories during lerna init. (@Siilwyn)
- #1004 Improve logging of package lifecycle errors during bootstrap. (@gauntface)
- #1000 Add
lerna link
command. (@Inkdpixels)
- #985 Update installation instructions to match lerna init behavior. (@sapegin)
- #1011 Add shield example to README.md. (@mfix22)
- Artem Sapegin (sapegin)
- Matt Gaunt (gauntface)
- Michael Fix (mfix22)
- Selwyn (Siilwyn)
- Tyll Weiß (Inkdpixels)
More bugfixes, plus support for the prepare
lifecycle script found in npm 4+.
- #992 Fix --conventional-commits recommending already released version. (@jezzay)
- #993 Fix silly level log output for --conventional-commits. (@jezzay)
- #996 Only diff package locations, not the entire repository. (@evocateur)
- #997 All command unit tests use yargs runner. (@evocateur)
A quick bugfix release to restore a broken lerna publish --canary
, as reported in #989. Many thanks to all who pitched in to identify the issue!
- #990 Use yargs parser in unit tests for greater fidelity. (@evocateur)
- Daniel Stockman (evocateur)
- #922 Support
--conventional-commits
in fixed versioning mode. (@jezzay) - #960 Improve support for semver prerelease identifiers when publishing. (@shawnbot)
- #940 Improve bootstrap performance with
--include-filtered-dependencies
in large, cyclic repos. (@lukebatchelor) - #943 Return error and exit on invalid command. (@Siilwyn)
- #965 Avoid false positives during integration test filtering. (@darrylhodgins)
- #976 Bump load-json-file. (@anfedorov)
- #982 Exit properly when there is nothing to publish. (@evocateur)
- #921 Fixed spelling mistake in a comment for Command.js. (@dlmr)
- #978 Add root package.json and CI setup sections to FAQ. (@Andarist)
- #981 Add troubleshooting info for GitHub lightweight tags. (@jezzay)
- #934 Platform independent integration tests. (@jezzay)
- #946 Swallow promise rejection in registerChild as it is handled via callback. (@viliusl)
- #973 Update LICENSE. (@yanca018)
- Andrey Fedorov (anfedorov)
- Daniel Stockman (evocateur)
- Darryl Hodgins (darrylhodgins)
- Gustaf Dalemar (dlmr)
- Jeremy (jezzay)
- Mateusz Burzyński (Andarist)
- Selwyn (Siilwyn)
- Shawn Allen (shawnbot)
- Vilius Lukošius (viliusl)
- lukebatchelor
- yanca018
🎉 It's happening! 🎉
- #904 Improved --canary functionality. (@Craga89)
--canary
now bumps the generated version to the next semver minor, and accepts a value (e.g.--canary=beta
) to override the default "alpha" tag.
- #899 Support Yarn workspaces to replace bootstrap command. (@bestander)
- #834 Pass extra arguments to npmClient during bootstrap. (@xaka)
- #873 Add root path dir environment variable to
lerna run
. (@yisraelx) - #822 Add --since flag to all commands that accept --scope. (@treshugart)
- #806 Allow custom yarn mutex from lerna.json config. (@ChristopheVandePoel)
- #868 lerna run: Don't error if no scoped packages are matched. (@ricky)
- #835 Flag for exec to bail upon child execution error. (@rsolomon)
- #857 Print n/a when a package has no version key.. (@ben-eb)
- #897 Run yarn in non-interactive mode. (@tricoder42)
- #898 Fix issue where Yargs default would override durable options. (@treshugart)
- #846 Do not log private packages as published. (@evocateur)
- #845 Preserve tag summary with
lerna publish --message
. (@evocateur) - #844 All CLI options should be configurable in lerna.json. (@evocateur)
- #840 Update publish docs in README. (@shilman)
- #836 Add semver notes to bootstrap command docs. (@loklaan)
- #861 chore(travis): test against node 8 and npm 5. (@douglasduteil)
- Ben Briggs (ben-eb)
- Craig Michael Thompson (Craga89)
- Daniel Stockman (evocateur)
- Douglas Duteil (douglasduteil)
- Konstantin Raev (bestander)
- Lochlan Bunn (loklaan)
- Michael Shilman (shilman)
- Pavel Strashkin (xaka)
- Ricky Rivera (ricky)
- Ross Solomon (rsolomon)
- Simen Bekkhus (SimenB)
- Tomáš Ehrlich (tricoder42)
- Trey Shugart (treshugart)
- ChristopheVandePoel
- yisraelx
This is the last release candidate.
We need to fix #789 before we can release v2.0.0
. All contributions are appreciated!
-
#807 Change exit codes for
updated
andpublish
. (@koddsson)It is now possible to run
lerna publish
in CI unconditionally, only publishing when changes are actually detected, and never failing when it decides to not publish anything.Previously:
lerna publish
when there are no updates to publish would throw an errorlerna updated
when there are no updates wouldexit 0
, making it ineffective as a chained filter (e.g.,lerna updated && lerna publish
)
Now:
lerna publish
when there are no updates is a no-op, exiting successfully with a helpful log messagelerna updated
when there are no updates will exit non-zero (but not throw an error), enabling it to be an effective filter
-
#726 Add --only-updated option to exec and run subcommands. (@jameslnewell)
When executing a script or command, only run the script or command on packages that have been updated since the last release. A package is considered "updated" using the same rules as
lerna updated
.lerna exec --only-updated -- ls -la lerna run --only-updated test
-
#795 Add --parallel flag to
lerna exec
. (@evocateur)With this flag,
lerna exec
will run the command in all filtered packages in parallel, completely ignoring concurrency and topological sorting.# transpile modules in all packages as changes occur lerna exec -- babel src -d lib -w # transpile watched modules only in package-foo lerna exec --scope package-foo -- babel src -d lib -w
It is advised to constrain the scope of the command when running with this flag, as spawning dozens of subprocesses may be harmful to your shell's equanimity (or maximum file descriptor limit, for example). YMMV
-
-
#796 Add --parallel flag to
lerna run
. (@evocateur)This allows simpler invocation of
watch
scripts, with the caveat that concurrency and topological sorting are completely ignored. This is generally the intention when callinglerna run watch
and other similar script targets, hence the additional flag.# the following commands are equivalent lerna run watch --concurrency=1000 --stream lerna run watch --parallel
Package filtering (
--scope
and--ignore
) is still available when this new flag is being used, and it is advised to narrow the scope of parallel execution when you have more than a dozen packages or so (YMMV). -
#803 Skip git repo check by default in Commands which do not rely on git. (@noherczeg)
-
#824 Add json output to
ls
andupdated
commands. (@ricky)When run with
--json
,lerna updated
andlerna ls
will return an array of objects in the following format:[ { "name": "package", "version": "1.0.0", "private": false } ]
-
#829 Prefix piped streams with rotating colors. (@evocateur)
- #798 Disable progress bars when running in CI or non-interactive shell. (@evocateur)
- #799 Do not ignore explicit
node_modules
in package paths. (@evocateur) - #815 Support GPG signing of git tags. (@alethea)
- #828 Switch to
fs-extra
. (@evocateur) - #831 Make
pkg
argument optional forlerna diff
. (@evocateur)
- #827, #830 Upgrade dependencies. (@evocateur)
- Alethea Rose (alethea)
- Daniel Stockman (evocateur)
- James Newell (jameslnewell)
- Kristján Oddsson (koddsson)
- Norbert Csaba Herczeg (noherczeg)
- ricky
Now with less bugs! The --hoist
flag works again, among other rc.3
bugfixes, and our logging is much more detailed now.
- #777 Replace --skip-temp-tag with --temp-tag. (@noherczeg)
- #779 Log with npmlog. (@evocateur)
- #782 Add --max-buffer flag. (@noherczeg)
- #775, #784 Install non-hoisted leaves using
npm --global-style
. (@ricky) - #776 Ignore node_modules when traversing nested package locations. (@evocateur)
- #778 Fix --hoist with no argument default. (@evocateur)
- #787 Prevent log messages and progress bars from mangling prompts. (@evocateur)
- #790 Log the directories being cleaned. (@evocateur)
- #781 Support
--force-publish
arrays and booleans. (@evocateur)
- #783 Add troubleshooting docs. (@noherczeg)
- #780 Restore async rimraf loops. (@evocateur)
Barring show-stopping bugs, our goal is to cut v2.0.0
later this week. Big props to all of our brave users riding the bleeding edge of release candidates and reporting issues!
- #764 Use network mutex when bootstrapping with yarn. (@evocateur)
lerna bootstrap --npmClient=yarn
should no longer require --concurrency=1
to avoid yarn cache race conditions.
- #769 Fix custom version prompt. (@timdorr)
- #771 Resolve internal CLI calls with Windows-safe pattern. (@evocateur)
If you've ever encountered the error Error: spawn rimraf ENOENT
, this should fix that. Turns out yarn
doesn't match a behavior of npm
when installing, and does not symlink transitive dependency binaries.
- #770 Pass multiple directories to rimraf. (@evocateur)
Inching ever closer to 🏁 v2.0.0!
Highlights: lerna exec
learned some new tricks (thanks to execa), and multi-line commit messages on Windows should now work.
$ lerna exec echo \$LERNA_PACKAGE_NAME
# note the escaped $, so it evaluates in the subshell, not the current shell
Ever get tired of repeating yourself in all of the package deps with devDependencies on babel-cli
or rimraf
? Now, all you need to do is have them installed in the root, and the following replaces all that duplicate code:
$ lerna exec rimraf lib
$ lerna exec babel -- src -d lib
The --
is still useful for hiding args from lerna
, but it isn't always necessary now.
In the example above, I had to hide the -d
from lerna
's arg parser, but positional arguments are just fine.
When in doubt, always append the command you want to run (e.g., babel src -d lib
) after the --
, after all other arguments to lerna exec
.
- #719 Use yargs to handle CLI args and subcommands. (@noherczeg)
lerna --help
is a bit cleaner now
Usage: lerna <command> [options]
Commands:
bootstrap Link local packages together and install remaining package dependencies
clean Remove the node_modules directory from all packages.
diff <pkg> Diff all packages or a single package since the last release.
exec <command> [args..] Run an arbitrary command in each package.
import <pathToRepo> Import the package in <pathToRepo> into packages/<directory-name> with commit history.
init Create a new Lerna repo or upgrade an existing repo to the current version of Lerna.
ls List all public packages
publish Publish packages in the current project.
run <script> [args..] Run an npm script in each package that contains that script.
updated Check which packages have changed since the last publish.
Global Options:
--loglevel What level of logs to report. [string] [default: "info"]
--concurrency How many threads to use if lerna parallelises the tasks. [number] [default: 4]
--scope Restricts the scope to package names matching the given glob.
(Only for 'run', 'exec', 'clean', 'ls', and 'bootstrap' commands) [string]
--ignore Ignore packages with names matching the given glob.
(Only for 'run', 'exec', 'clean', 'ls', and 'bootstrap' commands) [string]
--include-filtered-dependencies Include all transitive dependencies when running a command, regardless of --scope or --ignore.
--registry Use the specified registry for all npm client operations. [string]
--sort Sort packages topologically (all dependencies before dependents) [boolean] [default: true]
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
When a command fails, all logs are written to lerna-debug.log in the current working directory.
For more information, find our manual at https://github.com/lerna/lerna
Targeted command help: lerna bootstrap --help
lerna bootstrap
Global Options:
--loglevel What level of logs to report. [string] [default: "info"]
--concurrency How many threads to use if lerna parallelises the tasks. [number] [default: 4]
--scope Restricts the scope to package names matching the given glob.
(Only for 'run', 'exec', 'clean', 'ls', and 'bootstrap' commands) [string]
--ignore Ignore packages with names matching the given glob.
(Only for 'run', 'exec', 'clean', 'ls', and 'bootstrap' commands) [string]
--include-filtered-dependencies Include all transitive dependencies when running a command, regardless of --scope or --ignore.
--registry Use the specified registry for all npm client operations. [string]
--sort Sort packages topologically (all dependencies before dependents) [boolean] [default: true]
-h, --help Show help [boolean]
-v, --version Show version number [boolean]
Options:
--hoist Install external dependencies matching [glob] to the repo root [string] [default: '**']
--nohoist Don't hoist external dependencies matching [glob] to the repo root [string]
--npm-client Executable used to install dependencies (npm, yarn, pnpm, ...) [string]
We've got plenty of room to grow our documentation, PRs welcome!
- #758 Use temp-write for multi-line commit messages. (@evocateur)
- #761 Use shell option when spawning
lerna exec
. (@jwb) - #762 Fix durable option resolution. (@evocateur)
- #748 Reference conventionalcommits.org website in README. (@bcoe)
- #751 Update README.md and docs to better explain hoisting. (@kylecordes)
If you've ever had a question about hoisting, read @kylecordes's brilliant docs here!
- #745 Add eslint-plugin-node. (@evocateur)
- #747 Fix bootstrap integration tests. (@evocateur)
- #749 Convert eslint config to YAML. (@evocateur)
- #750 Refactor fixture helpers to reduce duplication. (@evocateur)
- #759 Use execa for child_process calls. (@evocateur)
- Benjamin E. Coe (bcoe)
- Daniel Stockman (evocateur)
- John Bito (jwb)
- Kyle Cordes (kylecordes)
- Norbert Csaba Herczeg (noherczeg)
A silent (but deadly) bug slipped into the last release. Many thanks to (@timdp) for discovering it.
- #744 Fix package.json updates during publish. (@evocateur)
🎉 It's the first release candidate of v2.0.0
! 🎉
Highlights: Jest, CI automation improvements, and tons of internal refactoring!
We've been in "beta" for quite some time, and it's time for our versioning to better communicate changes and guarantee API stability.
Our goal is to focus on a few important bugfixes before pushing the big red button and cutting a v2.0.0
for realsies. Check out the milestone to see if you can help!
- #732 Remove broken public API. (@evocateur)
Our apologies if you were using this, but did you know it's been broken since before the first 2.x beta?
We have better opportunities in the offing for helping folks reuse parts of our inner logic (a --json
flag for lerna ls
, perhaps?), and encourage those who have complex needs to join or start discussions in the issues.
- #666 Create annotated git tags instead of lightweight tags. (@AlexLandau)
- #665 Automate CHANGELOG updates and version bumps during publish with
--conventional-commits
flag. (@bcoe) - #607 Increment version by semver keyword with
--cd-version
flag. (@cif) - #641 Add prompts for prerelease versions. (@rtsao)
- #647 Allow concurrency to be configured via lerna.json. (@gigabo)
- #635 Switch to Jest. (@evocateur)
- #714 Refactor unit tests into Jest idioms, adding integration tests. (@evocateur)
- #731 Symlink binaries of scoped packages correctly. (@evocateur)
- #729 Upgrade progress to address upstream bug. (@zzarcon)
- #728 Handle
--ignore
flag correctly when publishing. (@noherczeg) - #711 Do not reject detached
HEAD
when publishing a canary release. (@evocateur) - #694, #705 Loosen version check to major-only. (@evocateur)
- #687 Support lerna execution from subdirectories of repo root. (@evocateur)
- #654, #672 Merge current process.env when using
--registry
flag. (@noherczeg), (@TheLarkInn) - #621 Include private packages in the list of updated packages. (@spudly)
- #638 Install with all dependencies when installing. (@gigabo)
- #655 Actually warn when a matching dependency version is not satisfied. (@evocateur)
- #674 Appveyor status should reflect master, not latest. (@evocateur)
- #736 Update FAQ.md with publish retry details. (@cdaringe)
- #693 Add GitHub issue and pull request templates. (@evocateur)
- #634 Add documentation about "watch" commands next to
--no-sort
. (@trotzig)
- #738 Use
babel-preset-env
instead ofbabel-preset-es2015
. (@evocateur) - #737 Update eslint, config, and plugins. (@evocateur)
- #733, #734 Refactor CWD handling. (@evocateur)
- #690 Whitelist files included in package tarball. (@evocateur)
- #681 Use
yarn --frozen-lockfile
in CI. (@evocateur) - #673 Use yarn instead of npm in CI. (@evocateur)
- #663 add tests for
NpmUtilities.getExecOpts()
. (@noherczeg)
- Alex Landau (AlexLandau)
- Ben Ipsen (cif)
- Benjamin E. Coe (bcoe)
- Bo Borgerson (gigabo)
- Christopher Dieringer (cdaringe)
- Daniel Stockman (evocateur)
- Hector Zarco (zzarcon)
- Henric Trotzig (trotzig)
- Henry Zhu (hzoo)
- Norbert Csaba Herczeg (noherczeg)
- Nuno Campos (nfcampos)
- Ryan Tsao (rtsao)
- Sean Larkin (TheLarkInn)
- Stephen John Sorensen (spudly)
- Vladimir Guguiev (wizardzloy)
- Yasser Kaddour (YasserKaddour)
- james kyle (thejameskyle)
📦 🐈 Initial Yarn support and more!
We'll make yarn the default once we feel that it's more stable.
$ lerna bootstrap --npm-client=yarn
{
"npmClient": "yarn"
}
- #595 Publish npm packages in topological order (@loganfsmyth)
Very important fix for Babel that we used in the last release. This prevents a timing issue when publishing where a module will try to download a package that isn't published yet because it is published before it's own dependency is published itself. We used to get many issues from users on non-public npm about "babel-types" not being found.
We now check for changes since the most recent tag in the current branch, instead of the most recent tag in entire repository. This allows publishing older versions of a project in maintenance branches, as well as nightly releases from a feature branch.
Additionally, we now ensure that the user is in a non-detached branch because lerna can't publish without a valid git branch.
Useful to get output for child processes immediately if using lerna run
with a watch command
$ lerna run watch --stream
- #620 Feature: skip-temp-tag. (@noherczeg)
This will not create a temporary dist-tag called lerna-temp
when publishing. Useful if your third party proxy doesn't support dist-tags.
$ lerna publish --skip-temp-tag
Defaults to running npm run test
and npm run env
{
"commands": {
"bootstrap": {
"includeFilteredDependencies": true
}
}
}
{
"commands": {
"run": {
"sort": false
}
}
}
- #599 Explicit registry flag feature. (@noherczeg)
$ lerna publish --registry https://my-private-registry
- #601 Fix --ignore flag when globs are expanded to an array. (@rtsao)
- #597 Support command config in either "commands" or "command". (@gigabo)
- #586 Avoid exception after successful
lerna diff
. (@evocateur)
- #604 Fix midair collision. (@doug-wade)
- #594 Remove
sync-exec
(@wtgtybhertgeghgtwtg)
- Ben Briggs (ben-eb)
- Bo Borgerson (gigabo)
- Daniel Stockman (evocateur)
- Douglas Wade (doug-wade)
- Garth Kidd (garthk)
- Gytis Vinclovas (Gongreg)
- Logan Smyth (loganfsmyth)
- Norbert Csaba Herczeg (noherczeg)
- Ryan Tsao (rtsao)
- simon360
- wtgtybhertgeghgtwtg
--include-filtered-dependencies
now works with ls
,exec
,run
as well!
- Fixes an issue with
--hoist
(from previous release)
- #581 Improve support for --include-filtered-dependencies. (@roblg)
- #576 Install with no arguments. (@gigabo)
- #569 Short-circuit out of install with no packages. (@gigabo)
- #574 Use correct logger method in Package method.. (@evocateur)
- #568 Check if directories exist before removing during hoist. (@gigabo)
- #562 Replace
lodash.find
,lodash.unionwith
, andpad
withlodash
.. (@wtgtybhertgeghgtwtg) - #584 Bump
command-join
.. (@wtgtybhertgeghgtwtg) - #575 Add coverage report. (@doug-wade)
- Bo Borgerson (gigabo)
- Daniel Stockman (evocateur)
- Douglas Wade (doug-wade)
- Robert Gay (roblg)
- wtgtybhertgeghgtwtg
3 new flags:
By default, all tasks execute on packages in topologically sorted order as to respect the dependency relationships of the packages in question. Cycles are broken on a best-effort basis in a way not guaranteed to be consistent across Lerna invocations.
Topological sorting can cause concurrency bottlenecks if there are a small number of packages with many dependents or if some packages take a disproportionately long time to execute. The --no-sort
option disables sorting, instead executing tasks in an arbitrary order with maximum concurrency.
Install external dependencies matching glob
at the repo root so they're
available to all packages. Any binaries from these dependencies will be
linked into dependent package node_modules/.bin/
directories so they're
available for npm scripts. If the option is present but no glob
is given
the default is **
(hoist everything). This option only affects the
bootstrap
command.
$ lerna bootstrap --hoist
Note: If packages depend on different versions of an external dependency, the most commonly used version will be hoisted, and a warning will be emitted.
This option may also be set in lerna.json
with "hoist": true
or "hoist": <glob>
.
Do not install external dependencies matching glob
at the repo root. This
can be used to opt out of hoisting for certain dependencies.
$ lerna bootstrap --hoist --nohoist=babel-*
This option may also be set in lerna.json
with "nohoist": <glob>
.
- #507 Automatic hoisting of common dependencies. (@gigabo)
- #547 Spawn child process for rimraf (speeds up
lerna clean
). (@roblg) - #543 [clean] Support
--include-filtered-dependencies
flag. (@roblg) - #412 Make bootstrap, exec and run commands execute packages in dependency order by default. (@seansfkelley)
- #373 [Feature] Log stdout when commands fail. Closes #343.. (@seansfkelley)
- #542 Fixes issue: prepublish not running in dependencies with
--scope --include-filtered-dependencies
. (@roblg)
When running lerna bootstrap --scope foo --include-filtered-dependencies
run prepublish task with the same flags.
- #465 Add a note about lerna-wizard.. (@szarouski)
- #554 Bump
cross-env
.. (@wtgtybhertgeghgtwtg) - #560 redo labels [skip ci]. (@hzoo)
- #559 Drop
isarray
.. (@wtgtybhertgeghgtwtg) - #557 Fix broken hoisting tests. (@doug-wade)
- #549 Bump
signal-exit
.. (@wtgtybhertgeghgtwtg) - #548 Bump
object-assigned-sorted
.. (@wtgtybhertgeghgtwtg) - #535 Don't include unnecessary files in the npm package. (@gpittarelli)
- #546 Drop
object-assign
.. (@wtgtybhertgeghgtwtg) - #541 Upgrade
inquirer
dependency. (@wtgtybhertgeghgtwtg)
- Bo Borgerson (gigabo)
- Douglas Wade (doug-wade)
- George Pittarelli (gpittarelli)
- Henry Zhu (hzoo)
- Robert Gay (roblg)
- Sean Kelley (seansfkelley)
- Sergey Zarouski (szarouski)
- wtgtybhertgeghgtwtg
- #537 [CRITICAL] Publish command is broken for 2.0.0-beta.33. (@diogofcunha)
- Diogo (diogofcunha)
- Drop Node 0.10/0.12/5
- Custom publish commit message
- Publish to a different remote
- Publish exact versions instead of
^
- #528 Drop node 5 from travis/appveyor. (@chitchu)
- #484 Drop support for node 0.10 and node 0.12. (@doug-wade)
- #460 Add --message option for custom commit msgs when publishing. (@traviskaufman)
Override default message with --message
or -m
lerna publish -m "chore: Publish"
- #508 [Feature] Allow git remote to be changed for publish. (@tdanecker)
Use a different git remote other than origin
lerna publish --git-remote upstream
- #390 [Feature] Adds
--include-filtered-dependencies
flag for bootstrap command. (@lukebatchelor)
my-component
and all of its dependencies will be bootstrapped
lerna bootstrap --scope my-component --include-filtered-dependencies
Use exact versions ("2.1.3"
) instead of with ^
("^2.1.3"
)
lerna publish --exact
- #458 use message passed as argument to the static method input() in PromptUtilities. (@btiwaree)
- #483 467: lerna bootstrap succeeds with 0 packages. (@doug-wade)
- #454 Use close event to wait for spawned processes to finish. (@xaka)
- Bishesh Tiwaree (btiwaree)
- Douglas Wade (doug-wade)
- Pavel Strashkin (xaka)
- Sam Gluck (sdgluck)
- Tenor Biel (L8D)
- Thomas Danecker (tdanecker)
- Travis Kaufman (traviskaufman)
- Vicente Jr Yuchitcho (chitchu)
- lukebatchelor
- #435 Use symlinks with relative paths instead of absolute on non-windows environments (Closes #423).. (@JaapRood)
- #440 Change testing NODE_ENV to "lerna-test" (Closes #406). (@ryb73)
- #444 Use correct logger method for warnings. (@evocateur)
Lerna now supports packages outside of the packages/
directory!
Configured via an array of globs in lerna.json
:
{
"lerna": "2.0.0-beta.31",
"version": "1.1.3",
"packages": ["packages/*"]
}
- #436 Highlight private packages in updated/publish output. (@chrishelgert)
No more confusion about what will actually get published!
Adds a --loglevel [silent|error|warn|success|info|verbose|silly]
option.
Any logs of a higher level than the setting are shown. The default is "info".
- #386 Add --scope and --ignore support for bootstrap, exec, run, clean and ls. (@lukebatchelor)
- #358 Run pre/post install scripts during bootstrap. (@seansfkelley)
- #442 Increase maxBuffer. (@rygine)
- #372 Fix logifyAsync, logifySync decorators. (@seansfkelley)
- Bastian Heist (beheist)
- Ben Briggs (ben-eb)
- Ben Clinkinbeard (bclinkinbeard)
- Bo Borgerson (gigabo)
- Chris Helgert (chrishelgert)
- Elise Chant (elisechant)
- Gary Johnson (garyjN7)
- Henry Zhu (hzoo)
- Ivan Akulov (iamakulov)
- James K (thejameskyle)
- Joscha Feth (joscha)
- MURAKAMI Masahiko (fossamagna)
- Sean Kelley (seansfkelley)
- Teppei Sato (teppeis)
- lukebatchelor