Moment.js 는 더이상 새로운 버전이 릴리즈 되지 않는다고 합니다

Moment.js 는 더이상 새로운 버전이 릴리즈 되지 않는다고 합니다

Moment.js 라이브러리(이하 Moment)가 사실상 개발 중단을 선언했습니다. 그 이유와 대안을 문서에 잘 정리해 두어서 간단하게 정리하여 알려드리려 합니다.

문서 전문은 momentjs 사이트에서 확인해보실 수 있습니다.

개발 중단 이유

너무 오래된 디자인과 신규 기능 추가의 어려움.

Moment는 JavaScript 생태계 시대 이전에 만들어졌습니다. 수년에 걸쳐 다소 발전했지만 본질적으로 2011년에 만들어졌을 때와 동일한 디자인이고 의존하는 프로젝트의 수가 많기 때문에 새로운 기능보다 안전성을 우선시 할 수밖에 없었습니다.

예를 들어, Moment 객체는 mutable 입니다. Moment를 immutable로 변경하면 Moment를 사용하는 모든 프로젝트를 변경해야 될 것입니다. 사이즈 문제.

Moment는 최신 tree shaking 알고리즘에 잘 동작하지 않습니다. 그래서 웹 애플리케이션의 사이즈가 증가하는 경향이 있습니다.

만약 어떤 부분에 국제화 또는 time zone 지원이 필요하다면, Moment는 이를 사용하기 위해 사이즈가 상당히 커질 수 있습니다.

최신 웹 브라우저(및 Node.js)는 ECMA-402로 코드화된 Intl 객체를 통해 국제화 및 표준 시간대 지원을 제공하고, Luxon 등과 같은 라이브러리는 이를 활용하여 자체 데이터 파일을 제공할 필요성을 줄이거나 제거합니다.

Moment 팀은 이 이슈들에 대해 오래 의견을 나눴고 많은 기존의 프로젝트들은 Moment를 계속 사용할 수 있음을 알고 있지만 앞으로 새로운 프로젝트에서 Moment를 사용하지 않도록 하고 싶다고 합니다.

즉, 앞으로 Moment 는

새로운 기능을 추가하지 않을 것입니다. Moment API를 immutable로 변경하지 않을 것입니다. Tree shaking 또는 번들 사이즈 이슈를 해결하지 않을 것입니다. 어떤 major 변경도 없을 것입니다 (버전 3는 없습니다). 특히 오랫동안 알려진 문재인 경우 버그나 동작상의 문제를 수정하지 않을 수 있습니다.

그러나, 기존의 수백만 개의 프로젝트에서 Moment가 확립되어있음을 이해하므로

중요한 보안 문제가 발생하면 이를 해결할 것입니다. JANA time zone 데이터베이스 출시에 따라 Moment-Timezone에 대한 업데이트를 출시할 예정입니다.

그래서 오늘날 최신 애플리케이션에서 사용하기에 탁월한 다른 라이브러리들을 권장하고 있습니다.

또한 JavaScript 언어에서 더이상 date와 time에 관한 라이브러리를 사용할 필요가 없도록 JavaScript 언어 자체 내에 API(Temporal)를 추가할 것을 제안한 상태라고 합니다.

현재 ECMA TC39 Stage 2 까지 올라간 상태라고 합니다.

대안

Moment에 대한 대안으로 제안된 라이브러리들은 아래와 같습니다.

Luxon Day.js Date-fns js-Joda

또한 라이브러리를 사용하지 않을 때 Date, Intl에 사용에 대한 유의 사항도 문서에 명시를 하였습니다.

이처럼 Moment가 사실상 개발 중단을 알리면서 기존의 사용하는 프로젝트들은 차근차근 변경하더라도 새로운 프로젝트를 시작하시는 분들께선 다른 라이브러리나 방법을 사용하시는 것이 좋을 것이라고 권장합니다.

from http://clap-yeon.tistory.com/51 by ccl(A) rewrite - 2021-11-25 10:27:16