First of all thank you for expressing interest in immutadot! 👍
We are very happy to welcome new contributors. 🎉
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).
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.
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
.
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.
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
.
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>/
.
docs/
, it is automatically updated once we create a new tag.
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.
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.
In order to keep a happy and respectful atmosphere around the project, we expect everyone participating in it to follow our Code of conduct.