eslint plugin to handle safely dates.
This eslint plugin is meant to be used to avoid explicit usage/manupulation of date in JS, so to avoid issues with timezones.
npm install --save-dev eslint-plugin-skyscanner-dates
- rules no-moment, no-dayjs, no-saddlebag-date for stopping the use of moment, moment-timezone, dayjs, saddlebag-date date libraries.
- rule no-date-fns-format for stopping using the date formatting in date-fns and stop using date formatting in date-fns-tz.
- rule no-saddlebag-localisation-tz for stopping performing timezone manipulation in saddlebag-localisation
- rule no-new-date-with-args for stopping using
new Date("some string")
.
Add to the .eslintrc.json
file inside the root folder of a linted project:
The rules no-moment
and no-new-date-with-string-args
will raise an error and others will be just a warning. A few months later, we will change the rules to be error
severity, to force people to honour the rulers.
{
"extends": "plugin:skyscanner-dates/recommended",
"plugins": ["skyscanner-dates"]
}
Any rule failing will raise a blocking error.
{
"extends": "plugin:skyscanner-dates/error",
"plugins": ["skyscanner-dates"]
}
Any rule failing will just raise a warning.
{
"extends": "plugin:skyscanner-dates/warn",
"plugins": ["skyscanner-dates"]
}
Each rule can be configured on its own following eslint
conventions:
{
"plugins": ["skyscanner-dates"],
"rules": {
"skyscanner-dates/no-moment": "warn",
"skyscanner-dates/no-dayjs": "warn",
"skyscanner-dates/no-saddlebag-date": "warn",
"skyscanner-dates/no-date-fns-format": "warn",
"skyscanner-dates/no-saddlebag-localisation-tz": "warn"
"skyscanner-dates/no-new-date-with-args": "warn"
}
}
Your favourite code editor should provide information about API using code completion.
API docs can be generated by cloning the project and running:
npm install
npm run build-docs
API docs will now be generated in docs/api.md
.
npm install
- installs dependenciesnpm run lint
- runs linternpm run build-docs
- produces API documentation in Markdown format indocs/api.md
npm test
- runs linter and tests
See CONTRIBUTING.md if you want to contribute.