Skip to content

Commit

Permalink
feat(list): Improve scriptability with several new options
Browse files Browse the repository at this point in the history
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/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,108 @@
## Usage

The `list` subcommand is aliased to several convenient shorthands (similar to [`npm ls`](https://docs.npmjs.com/cli/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)

```sh
# The following commands are identical:
$ lerna list
$ lerna ls
package-1
package-2
```

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](https://www.npmjs.com/package/@lerna/filter-options)).

### --json

Show information as a JSON array.

```sh
$ lerna ls --json
```

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

```json
[
{
"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`](http://trentm.com/json/) utility to pick out individual properties:

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

### --all

Alias: `-a`

Show private packages that are hidden by default.

```sh
$ lerna ls --all
package-1
package-2
package-3 (private)
```

### --long

Alias: `-l`

Show extended information.

```sh
$ 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..]`

```sh
$ lerna ls --parseable
/path/to/packages/pkg-1
/path/to/packages/pkg-2

$ lerna ls -pl
/path/to/packages/pkg-1:package-1:1.0.1
/path/to/packages/pkg-2:package-2:1.0.2

$ lerna ls -pla
/path/to/packages/pkg-1:package-1:1.0.1
/path/to/packages/pkg-2:package-2:1.0.2
/path/to/packages/pkg-3:package-3:1.0.3:PRIVATE
```
125 changes: 0 additions & 125 deletions commands/list/__tests__/__snapshots__/list-command.test.js.snap

This file was deleted.

Loading

0 comments on commit 2e204af

Please sign in to comment.