⚠⚠⚠ Please contribute new code in TypeScript ⚠⚠⚠
Read more about migration to TypeScript
Help is always welcome. There are areas where you can help:
-
The core functionality (performance improvements, bug fixes, new features, etc.).
-
Documentation (markdown documents, inline JSDoc comments).
-
Test suite & development environment improvements.
-
The website.
If you see a gap, but don't have time, experience, or you just need help with the library, don't hesitate to shoot an issue.
The date-fns functionality is comprehensive and covers most of the use cases, however it doesn't have extended time zone support. Please leave a comment to the Extended time zones support issue if you are interested in the functionality or want to help with development.
If you are interested in Elm/ClojureScript/etc. wrappers, please file an issue.
Due to the modular nature of date-fns, it's more than open to new features. However, when a new function duplicates the existing functionality, native API or causes significant build size increase, a PR might be rejected or the author can be asked to move the code to a new or another package.
Please follow the main contributing rules, to maintain date-fns' top quality:
-
Follow style guides:
-
Write tests.
-
Don't update the changelog.
-
Don't change the library version.
-
Fork the project and clone the fork repo.
-
Run
yarn
to install the application dependencies.
Run all tests:
yarn test
Run tests once:
yarn test --single-run
To test a function in REPL, use babel-node
located in ./node_modules/.bin
:
./node_modules/.bin/babel-node
> const toDate = require('./src/toDate')
undefined
> toDate(1392098430000).toString()
'Tue Feb 11 2014 01:00:30 GMT-0500 (Eastern Standard Time)'
>
Build date-fns to test in in your project:
env PACKAGE_OUTPUT_PATH="$(pwd)/../PATH-TO-YOUR-MODULE/node_modules/date-fns" ./scripts/build/package.sh
Rebuild FP functions, typings and indices by using the following script. It could take around a minute:
./scripts/build/build.sh
The project follows Prettier code style and uses ESLint as the linter. To lint the code, run:
yarn lint
The project uses EditorConfig to define basic coding style guides. Please install a plugin for your editor of choice or manually enforce the rules listed in .editorconfig.
JSDoc is used for the code documentation. Along with
standard JSDoc tags, date-fns uses @category
tag that allows
to group functions.
jsdoc-parse is used to parse JSDoc annotations.