docs: add use luxon date library adr

This commit is contained in:
Andrew Thauer
2021-01-17 21:12:55 -05:00
parent 060fd0a44a
commit e58af307f0
4 changed files with 50 additions and 1 deletions
+1
View File
@@ -115,6 +115,7 @@ Kumar
learnings
lerna
Lerna
Luxon
magiclink
mailto
maintainership
@@ -0,0 +1,46 @@
---
id: adrs-adr010
title: ADR010: Luxon Date Library
description: Architecture Decision Record (ADR) for Luxon Date Library
---
| Created | Status |
| ---------- | ------ |
| 2021-01-16 | Open |
# ADR010: Luxon Date Library
## Status
Proposed
## Context
Date formatting (e.g. `a day ago`) and calculations are common within Backstage.
Some of these useful features are not supported by the standard JavaScript
`Date` object. The popular [Moment.js](https://momentjs.com/) library has been
commonly used to fill this gap but suffers from large bundle sizes and mutable
state issues. On top of this, `momentjs` is
[being sunset](https://momentjs.com/docs/#/-project-status/) and the project
recommends using one of the more modern alternative libraries.
See
[[RFC] Standardized Date & Time Library](https://github.com/backstage/backstage/issues/3401)
## Decision
We will use [Luxon](https://moment.github.io/luxon/index.html) as the standard
date library within Backstage.
`Luxon` provides a similar feature set and API to `Moment.js`, but improves on
it's design through immutability and the usage of modern JavaScript APIs (e.g.
`Intl`). This results in smaller bundle sizes while providing a full feature set
and avoids the need for using additional libraries for common date & time tasks.
## Consequences
- All core packages and plugins within Backstage should use `Luxon` for any date
manipulation or formatting that cannot be easily accomplished with the native
JavaScript `Date` object.
- Using a single date library avoids having to learn multiple library APIs
- Having a single date library will reduce bundle sizes
+2 -1
View File
@@ -182,7 +182,8 @@
"architecture-decisions/adrs-adr006",
"architecture-decisions/adrs-adr007",
"architecture-decisions/adrs-adr008",
"architecture-decisions/adrs-adr009"
"architecture-decisions/adrs-adr009",
"architecture-decisions/adrs-adr010"
],
"Contribute": ["../CONTRIBUTING"],
"Support": ["support/support", "support/project-structure"],
+1
View File
@@ -118,6 +118,7 @@ nav:
- ADR007 - Use MSW for Network Request Mocking: 'architecture-decisions/adr007-use-msw-to-mock-service-requests.md'
- ADR008 - Default Catalog File Name: 'architecture-decisions/adr008-default-catalog-file-name.md'
- ADR009 - Entity References: 'architecture-decisions/adr009-entity-references.md'
- ADR010 - Luxon Date Library: 'architecture-decisions/adr010-luxon-date-library.md'
- Contribute: '../CONTRIBUTING.md'
- Support:
- 'support/support.md'