Skip to content


Browse files Browse the repository at this point in the history
feat(list): Improve scriptability with several new options
BREAKING CHANGE: 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
  • Loading branch information
evocateur committed Jul 28, 2018
1 parent 8b97394 commit 2e204af
Show file tree
Hide file tree
Showing 12 changed files with 519 additions and 179 deletions.
96 changes: 86 additions & 10 deletions commands/list/
Expand Up @@ -4,32 +4,108 @@
## Usage

The `list` subcommand is aliased to several convenient shorthands (similar to [`npm ls`](

* `lerna ls`: Identical to `lerna list`, which is itself analogous to the `ls` command
* `lerna ll`: Equivalent to `lerna ls -l`, showing [long](#--long) output
* `lerna la`: Equivalent to `lerna ls -la`, showing [all](#--all) packages (including private ones)

# The following commands are identical:
$ lerna list
$ lerna ls

List all of the public packages in the current Lerna repo.
You might notice extra logging from `lerna` when running these commands in your shell.
Rest assured they will not infect your piped incantations,
as all logs are emitted to `stderr`, not `stdout`.

In any case, you can always pass `--loglevel silent` to create pristine chains of magical shell wizardry.

## Options

`lerna ls` respects the `--ignore` and `--scope` flags (see [Filter Flags](

### --json

Show information as a JSON array.

$ lerna ls --json

When run with this flag, `ls` will return an array of objects in the following format:

"name": "package",
"name": "package-1",
"version": "1.0.0",
"private": false,
"location": "/path/to/packages/pkg-1/"
"name": "package-2",
"version": "1.0.0",
"private": false
"private": false,
"location": "/path/to/packages/pkg-2/"

**Tip:** Pipe to the [`json`]( utility to pick out individual properties:

$ lerna ls --json --all | json -a -c 'this.private === true' name

### --all

Alias: `-a`

Show private packages that are hidden by default.

$ lerna ls --all
package-3 (private)

### --long

Alias: `-l`

Show extended information.

$ lerna ls --long
package-1 v1.0.1 packages/pkg-1
package-2 v1.0.2 packages/pkg-2
$ lerna ls -la
package-1 v1.0.1 packages/pkg-1
package-2 v1.0.2 packages/pkg-2
package-3 v1.0.3 packages/pkg-3 (private)

### --parseable

Alias: `-p`

Show parseable output instead of columnified view.

By default, each line of the output is an absolute path to a package.

In `--long` output, each line is a `:`-separated list: `<fullpath>:<name>:<version>[:flags..]`

$ lerna ls --parseable
$ lerna ls -pl
$ lerna ls -pla
125 changes: 0 additions & 125 deletions commands/list/__tests__/__snapshots__/list-command.test.js.snap

This file was deleted.

0 comments on commit 2e204af

Please sign in to comment.