Skip to content

Latest commit

 

History

History
55 lines (43 loc) · 4.33 KB

CONTRIBUTING.md

File metadata and controls

55 lines (43 loc) · 4.33 KB

immutadot logo

Contributing to immutadot

First of all thank you for expressing interest in immutadot! 👍
We are very happy to welcome new contributors. 🎉

How can I contribute? 👨‍💻

Report a bug 🐛

If you think you have found a bug, please search our issue tracker to see if anyone has already reported it.
If you are the first to have noticed it, please create an issue, and make sure to provide any information that might help us resolve it.
You are welcome to try and fix it by submitting a pull request if you would like to (see Pull requests section for more information).

Feature requests and enhancements ✨

We are open to feature requests, be sure to search our issue tracker to see if anyone has already asked for it.
If not, please create an issue describing what you want, what your use case is, and an example of code.
You are welcome to try and do it yourself by submitting a pull request if you would like to (see Pull requests section for more information).
As immutadot is still a very young project, we are also open to enhancement suggestions; if you think of anything that might help us improve the project, please create an issue and we will be happy to discuss it with you.

Pull requests ⬆️

Installation 📦

We use yarn as our package manager.
We don't support npm due to the overhead of managing two lock files and the inconsistency of package-lock.json between Linux and MacOS (see npm/npm#17722).
Once you have cloned the project, run yarn to install all the dependencies. If you encounter trouble in the post-install phase involving node-sass, make sure you are building with VC++ 2013: yarn config set msvs_version 2013.

Architecture 🏠

immutadot is managed as a monorepo using yarn workspaces and lerna

Each package of immutadot is organized in namespaces (array, collection, lang, etc.), a lot like lodash. Please try to respect this organization; if you are not sure where to put your code, ask for the right place in your issue or PR.

Tests and Code style 👮‍♂️

If you write any code, be sure to write the test that goes with it in a file located at the same place and named <something>.spec.js; we have a coverage of a 💯 percent and we would like to keep it 😉.
We use eslint to enforce some coding rules (2 spaces indentation, etc.), ideally use an IDE to help you comply with these rules.
Before pushing anything, please be sure to check that the tests are OK by running yarn test and that your code complies with the coding rules by running yarn lint.

Documentation 💡

The better the documentation, the fewer things users will have to wonder about.
We use jsdoc to document our code, if you write any new code please write the documentation with it and try to conform to the existing documention.
If you want to see the result of what you wrote you can run yarn docs, it will generate the documentation in docs/<version>/.
⚠️ Please do not commit the files generated in docs/, it is automatically updated once we create a new tag.

emojis 🍻

We really ❤️ emojis, and we would like you to share our ❤️.
Each and every commit message has to be prefixed by an emoji.
Please refer to the gitmoji guide to know which one to use.

Any questions ❓

If you are not sure whether to report a bug or ask for a new feature, or if you just have a question about anything, please create an issue.

Code of conduct 📄

In order to keep a happy and respectful atmosphere around the project, we expect everyone participating in it to follow our Code of conduct.