How to contribute
Support and contributions from the open source community are essential for keeping MEAN.js up to date and always improving! There are a few guidelines that we need contributors to follow to keep the project consistent, as well as allow us to keep maintaining MEAN.js in a reasonable amount of time.
Creating an Issue
Before you create a new Issue:
- Check the Issues on Github to ensure one doesn't already exist.
- Clearly describe the issue, including the steps to reproduce the issue.
- If it's a new feature, enhancement, or restructure, Explain your reasoning on why you think it should be added, as well as a particular use case.
- Create a topic branch from the master branch.
- Check for unnecessary whitespace / changes with
git diff --checkbefore committing.
- Also check that your code is formatted properly with spaces (hint: Use .editorconfig)
- Keep git commit messages clear and appropriate
- If possible, please "squash" your commits to as few commits as possible/reasonable such as one commit for implementation, one for tests, and one for documentation before finally squashing to one commit when getting the LGTM from a collaborator.
- Follow the commit message guidelines below.
- Make Sure you have added any tests necessary to test your code.
- Run all the tests to ensure nothing else was accidently broken.
- Don't rely on the existing tests to see if you've broken code elsewhere; test the changes you made in a browser too!
- Update the Documentation to go along with any changes in functionality / improvements in a separate pull request against the gh-pages branch.
Commit Message Guidelines
Header Blank Line Body Blank Line Footer The header should look like: <type>(<scope>): <subject> The body should have any necessary detailed info about the commit: An example, references as to where this idea came from, etc. The footer should have all the issues tagged: Fixes #123, Fixes #456 So a commit should like like: feat(users): Add new Yahoo authentication Yahoo authentication idea proposed by @codydaig Example implementation in file.js Fixes #82
- feat - Features, Enhancements, and overall Improvements
- fix - Fixes, Bugs, HotFixs, etc...
- doc - Changes to the Documentation and doesn't actually touch any code.
- The scope should be where the change took place.
- Examples: users, core, config, articles
- The subject line should be clear and concise as to what is being accomplished in the commit.
- General Rules:
- No Line in the Commit message can be longer than 80 characters.
- Refrence: Angular Conventions
Submitting the Pull Request
- Push your changes to your topic branch on your fork of the repo.
- Submit a pull request from your topic branch to the master branch on the MEAN.JS repository.
- Be sure to tag any issues your pull request is taking care of / contributing to.
- By adding "Closes #xyz" to a commit message will auto close the issue once the pull request is merged in.
- Small changes are usually accepted and merged in within a week (provided that 2 collaborators give the okay)
- Larger changes usually spark further discussion and possible changes prior to being merged in.
The code for the documentation and the website are located in the meanjs/mean repo on the gh-pages branch. The website is hosted by github pages and generated using jekyll. See the README in the gh-pages branch for more information on how to get your dev enviorment set-up.
Generating a new Release
For those who will be generating releases:
- Don't forget to update the changelog!
- Install the changelog cli tool:
npm install conventional-changelog-cli
- Generate the updated changelog
node_modules/.bin/conventional-changelog -r 1 > /tmp/release && cat CHANGELOG.md >> /tmp/release && cat /tmp/release > CHANGELOG.md && rm /tmp/release
- Review, and commit changes
- Install the changelog cli tool: