lerna create
Create a new lerna-managed package
Install lerna for access to the lerna
CLI.
Usage
lerna create <name> [loc]
Create a new lerna-managed package
Positionals:
name The package name (including scope), which must be locally unique _and_
publicly available [string] [required]
loc A custom package location, defaulting to the first configured package
location. The location must match a configured packages directory.
[string]
Note: For more info on how Lerna package directories are configured, see https://lerna.js.org/docs/faq#how-does-lerna-detect-packages.
Command Options:
--access When using a scope, set publishConfig.access value
[choices: "public", "restricted"] [default: public]
--bin Package has an executable. Customize with --bin
<executableName> [default: <name>]
--description Package description [string]
--dependencies A list of package dependencies [array]
--es-module Initialize a transpiled ES Module
--homepage The package homepage, defaulting to a subpath of the root
pkg.homepage [string]
--keywords A list of package keywords [array]
--license The desired package license (SPDX identifier) [default: ISC]
--private Make the new package private, indicating that it
should not be published.
--registry Configure the package's publishConfig.registry [string]
--tag Configure the package's publishConfig.tag [string]
--yes Skip all prompts, accepting default values
7.0.0 (2023-06-08)
BREAKING CHANGES
After updating we strongly recommend running lerna repair
in your project. This will migrate your lerna.json
to the latest and greatest and remove any outdated options.
As this is a major release there are a few breaking changes to be aware of, which may or may not affect your lerna repos, depending on how you are using the tool.
- node v14 support is dropped because it is end of life
When a node version because end of life (EOL) it means that it does not receive any updates or maintenance whatsoever, even if critical security vulnerabilities have been uncovered.
We strongly encourage all folks here to keep up with the maintenance LTS version of Node at an absolute minimum:
https://github.com/nodejs/release#release-schedule
NOTE: Due to an oversight, we initially forgot to formally remove this from the engines field. This was corrected in patch 7.3.1
- legacy package management commands have been removed
We no longer include the bootstrap
, add
, and link
commands by default. We strongly recommend using your package manager (npm
, yarn
, pnpm
) for package management related concerns such as installing and linking dependencies.
There will not be any active work done on these commands and you should look to migrate as soon as possible.
For full context how why we made this change and how you can migrate your projects, please read our detailed guide here: https://lerna.js.org/docs/legacy-package-management
- Workspaces are used by default and
useWorkspaces
has been removed
We now use your package manager's workspaces configuration by default in order to resolve packages for lerna to operate on. If you wish to customize the packages that lerna will operate on, you can still use a packages
property in your lerna.json
just as you did before, but there is no longer any need for a useWorkspaces
flag. If the packages
property is present, lerna will use that, otherwise it will try and read your workspaces configuration.
Running lerna repair
will automatically remove useWorkspaces
from your lerna.json
for you.
NOTE: If you are using pnpm
as your package manager, it is important to set "npmClient": "pnpm"
in your lerna.json
so that lerna knows to look for a pnpm-workspaces.yaml
file and not just check your root package.json
.
- lerna init can no longer be run on an existing lerna repo
It was a confusing behavior that lerna init
could be run on an existing lerna repo and would attempt to coerce its setup to something closer to a fresh repo, so we have removed this behavior and lerna will hard error if it detects the directory is already initialized.
You can run lerna repair
at any time to update your configuration to the latest and greatest.
- long deprecated options have been removed
The following options (on the left of the => in each case) have been deprecated for many years (since before we took over stewardship of the project) and have finally been removed. If you are using them in your lerna.json
all you need to do is run lerna repair
and it will automatically migrate you to their modern equivalent. If you are passing them in on the command line, you will need to update your usage as follows:
--includeFilteredDependencies
=> --includeDependencies
--includeFilteredDependents
=> --includeDependents
--githubRelease
=> --createRelease=github
--skipGit
=> --push=false --gitTagVersion=false
--repoVersion
=> [positional bump]
--cdVersion
=> [positional bump]
--npmTag
=> --distTag
--ignore
=> --ignoreChanges
Features
- add migration for adding $schema, increase some strictness (73ceac3)
- publish: support custom directory per-package (#3699) (9da575e)
- init: support --dryRun flag and preview file system changes
Bug Fixes
- bump cosmiconfig to v8 (#3701) (898923d)
- ensure repair command not blocked by config validation (e237d58)
- improve github client missing env var error (ce4b352)
- internal cli.js should not be bundled (53d73c6)
- migration building/publishing issues (27bf800)
- publish: use correct version in log messages (#3702) (4be9188)
- share project data when nesting commands (#3709) (53e71e4)
- support nx 16.3.1+ (#3707) (647dbb5)