<commit_before># Lerna Changelog

Generate a changelog for a [lerna][lerna-homepage] monorepo

Based on [@hzoo][hzoo-profile]'s long-lived [PR][original-pr] for `lerna changelog`.

[lerna-homepage]: https://lernajs.io
[hzoo-profile]: https://github.com/hzoo
[original-pr]: https://github.com/lerna/lerna/pull/29<commit_msg>Add some setup tips to README<commit_after># Lerna Changelog

Generate a changelog for a [lerna][lerna-homepage] monorepo.

Based on [@hzoo][hzoo-profile]'s long-lived [PR][original-pr] for `lerna changelog`.

Uses github PR/Issue names categorized by labels with configurable headings.

## Usage

Install:

```bash
$ npm install -g lerna-changelog
```

Configure:

```diff
$ git diff lerna.json
...
 {
+  "changelog": {
+    "repo": "my-org/my-repo",
+    "labels": {
+      "bug": "Bug fix",
+      "cleanup": "Housekeeping"
+    }
+  },
   "lerna": "2.0.0-beta.9",
   "version": "0.2.11"
 }
```

Run:

```bash
$ lerna-changelog
## Unreleased (2016-05-24)

#### Bug fix
* `my-package-a`, `my-package-b`
  * [#198](https://github.com/my-org/my-repo/pull/198) Avoid an infinite loop. ([@helpful-hacker](https://github.com/helpful-hacker))

#### Housekeeping
* `my-package-c`
  * [#183](https://github.com/my-org/my-repo/pull/183) Standardize error messages. ([@careful-coder](https://github.com/careful-coder))

#### Commiters: 2
- helpful-hacker
- careful-coder

```

Copypasta.  You're done!

[lerna-homepage]: https://lernajs.io
[hzoo-profile]: https://github.com/hzoo
[original-pr]: https://github.com/lerna/lerna/pull/29
{'fraction_non_alphanumeric': 0.19638242894056848, 'fraction_numerical': 0.02131782945736434, 'mean_word_length': 4.029220779220779, 'pattern_counts': {'":': 7, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 10, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2957515', 'n_tokens_mistral': 650, 'n_tokens_neox': 605, 'n_words': 116}