GithubHelp home page GithubHelp logo

frinyvonnick / gitmoji-changelog Goto Github PK

View Code? Open in Web Editor NEW
380.0 13.0 48.0 22.5 MB

A changelog generator for gitmoji 😜

Home Page: https://www.npmjs.com/package/gitmoji-changelog

License: MIT License

JavaScript 98.68% Dockerfile 0.49% HTML 0.83%
gitmoji commit-conventions commit changelog emoji node javascript cli semver nantes

gitmoji-changelog's People

Contributors

adamaq01 avatar allcontributors[bot] avatar bgauduch avatar bpetetot avatar c4th4r5y5 avatar charlyx avatar danieltamkin avatar dependabot[bot] avatar emmanueldemey avatar endormi avatar fabienjuif avatar fberthelot avatar fredericbonnet avatar frinyvonnick avatar gmembre-zenika avatar horaklukas avatar juwit avatar kefranabg avatar lhauspie avatar marklyck avatar mathieutu avatar quentinncl avatar rudym avatar sercanuste avatar snikic avatar yannbertrand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gitmoji-changelog's Issues

Connect it with lerna publish

It would be great if gitmoji-changelog can be interfaced with lerna publish.

One idea could be to use the last pushed lerna tag

Maybe this workflow?

  1. publish with lerna
  2. run gitmoji-changelog
  3. commit --amend
  4. retag

Uncouple cli from input and ouput

Uncouple cli from input and ouput, so we can have multiple input sources and output sources

Input sources

  • http
  • fs

Output sources

  • http
  • fs

Format

  • json
  • markdown
  • asciidoc

Suggest versions in prompt

Idea

Maybe we can do something like:

  • gitmoji-changelog prepare

And the CLI ask us wich version we want next, like lerna publish do (or @lerna/versions ?):

  • 1.0.0 (major)
  • 0.1.0 (minor)
  • 0.0.1 (patch)

And then continue

Cons

Maybe this is out of gitmoji-changelog idea

Sort / Group similar commits

We can group together commit that are similars, like:

  • :memo: update README.md
  • :memo: README.md updated
  • :memo: Update README.md

Should be grouped together so we can merge them manually after gitmoji-changelog is ran.

[CI/Docker] fix external dependencies versions

A good practice to allow build reproducibility is to fix all external dependencies :

  • The FROM image should use the most precise tag available (ie. using the one containing the build date)
  • all the packages installed should have pinned versions
  • any external dependency should have a pinned version πŸ˜‰

Merge prerelease

We should merge prerelease versions like alpha, beta, release candidate, ... when the matching release has been done.

Handle GitHub release

Idea

Put the release changelog into github release pages.
We maybe need to add plugins to gitmoji-changelog (or middlewares in userland)

Cons

Maybe this is not the scope of gitmoji-changelog

Badge

gitmoji-changelog

See you monday to a PR ;)

Let the user choose what commits he wants in the changelog

First of all, thanks for this awesome lib πŸ‘

Feature Request

Describe your idea
The user might want to manually select commits he wants in his changelog.

Describe what you'd like
When running gitmoji-changelog, display the list of commits and let the user unselect (all commits would be selected by default) the commits he don't want to add in the changelog.

Example :

> gitmoji-changelog
β–Ά  start     gitmoji-changelog v1.1.0
Choose commits :
- [x] πŸ›Fix bug
- [ ] πŸ”₯Remove file
- [x] πŸ“Add doc

Sort commit by dates

Hey, in #12 you sorted commit by emoji code then by date.

.sort((first, second) => {
          if (!first.emojiCode) return -1

          const emojiCriteria = first.emojiCode.localeCompare(second.emojiCode)
          if (emojiCriteria !== 0) return emojiCriteria
          return first.date.localeCompare(second.date)

It results a weird sorting, by emoji type, so a bit "randomly".
An example here:
screen shot 2019-02-14 at 14 25 59

where we should have the first commit (πŸŽ‰), then some couples of features and the tests associated to them (so couples of "✨ followed by βœ…").

My opinion is that inside a category we should sort the commits by date and nothing else, and that the commits should be sorted newer at up.

I can do the PR for that if you want.
Thanks for your work.
Matt'

rework: gitmoji-changelog-markdown

Rename the package to gitmoji-changelog-template or gitmoji-changelog-format
Add a middleware system:

  • core
  • markdown
  • etc

Each format should have:

  • a template (with handlebars), example: template.md
  • a mapping routine that uses previous middlewares, example: generateMarkdown.js:
    • 1st middleware: core()
    • 2nd middleware: markdown()

Keep version hierarchy (semver)

We should reflect the hierarchy in markdown using right heading.

  • # for major release
  • ## for minor release
  • ### for patch release

Example:

v2.0.0

  • Some other commit

v1.1.0

  • Some other commit

v1.0.1

  • Some other commit

v1.0.0

  • Some commit

Ideas for further versions

  • Handle automatically multiple technologies (node, maven, makefile, config file if nothing found)
  • 2 versions of middleware one that respect data format handled by gitmoji-changelog and a second one which take a template for more flexibility

If no new commits, don't generate an empty changelog

When there is no new commit, gitmoji-changelog will generate an empty release.
It should not generate anything and throw an error or warning in the CLI saying that there is no new commit to generate changelog. (maybe propose to git fetch origin if user forget to get last commits)

group / middleware (?)

Maybe you could group lignes of changelog ?
Imagine this commit log:

  1. :sparkles: screen / users / add
  2. :sparkles: screen / todo / list
  3. :sparkles: screen / users / remove

It would be nice that this changelog is generated:

## Added
 - screen / users / add
 - screen / users / remove
 - screen / todo / list

order: 1 - 3 - 2 // or 3 - 1 - 2

Then I can manually group by screen if I want to :)


If you don't want to, can you think about a middleware implementation instead of writing the lib bar.


Writing the example, a middleware implementation would be a must have for me :)
I could group by screen my myself ;)

Add publishing instruction in contributing.md

I just published a version using lerna version since I can't figure out how to use correctly lerna publish.

Firstly I used the command lerna version premajor to bump an alpha version in every packages. Then I used the command yarn publish --tag alpha and type the current version in the prompt
in each package to publish this version to npm.

After this, I had to execute gitmoji-changelog and amend release commit and move the git tag and push force it on master.

Add the author

Add an option so each commit is suffixed by its author.
This great for opensource :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.