Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 2.94 KB

README.md

File metadata and controls

90 lines (66 loc) · 2.94 KB

eslint-plugin-skyscanner-dates

Build Status

eslint plugin to handle safely dates.

Features

This eslint plugin is meant to be used to avoid explicit usage/manupulation of date in JS, so to avoid issues with timezones.

Installation

npm install --save-dev eslint-plugin-skyscanner-dates

Rules

  • 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").

Usage

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"
  }
}

API

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.

Developing

  • npm install - installs dependencies
  • npm run lint - runs linter
  • npm run build-docs - produces API documentation in Markdown format in docs/api.md
  • npm test - runs linter and tests

Contributing

See CONTRIBUTING.md if you want to contribute.