개인적으로 JavaScript에서 날짜 관련해서 moment를 꽤나 신뢰하고 오랫동안 사용했습니다만, 최근에 moment가 더 이상의 지원은 없다라는 사실을 접하고 많이 슬펐습니다. ㅠㅠ
물론 moment를 사용하면서도 불편한 점도 없이 않아 있었지만, 나름 훌륭하다고 생각했고 무엇보다도 손에 익다보니 편했던 것이 사실입니다. 그래서 더더욱 슬프게 느껴졌습니다. 그러면 왜 지원을 중단했는지, 대안으로는 무엇이 있는지 살펴보도록 하겠습니다.
일단, npm에 들어가보면 마지막 업데이트가 2020-10-06으로 되어 있습니다. 그리고 주간 다운로드 수가 1,800만... 물론 업데이트가 중단된 것이지 기존의 moment 라이브러리는 계속 사용할 수 있습니다.
https://momentjs.com/docs/#/-project-status/
요약하자면,
- 너무 오래된 디자인과 신규 기능 추가의 어려움
- moment는 JavaScript 생태계 시대 이전에 만들어졌고, 수년에 걸쳐 다소 발전했지만 최초 설계된 디자인과 동일한 디자인이고, 의존하는 프로젝트의 수가 많기 때문에 새로운 기능보다 안전성을 우선시 할 수 밖에 없었다.
- 사이즈 문제
- moment는 최신 Tree shaking 알고리즘이 잘 동작하지 않아 moment 사이즈가 증가하는 경향이 있고, time zone이 필요할 경우 이를 사용하기 위해서는 사이즈가 상당히 커질 수 있다.
그래서 앞으로는,
- 새로운 기능을 추가하지 않을 것이다.
- moment api를 immutable(불변)로 변경하지 않을 것이다.
- Tree shaking 또는 번들 사이즈 이슈를 해결하지 않을 것이다.
- 어떤 major 변경도 없을 것이다. (버전 3은 없다.)
- 특히, 오랫동안 알려진 문제인 경우 버그나 동작상의 이슈를 수정하지 않을 수 있다.
- 하지만 많은 프로젝트에서 사용되고 있기에, 중대한 보안 문제가 발생할 경우에는 이를 해결할 수 있다.
moment 프로젝트에서도 다른 라이브러리 사용을 권장하고 있는 상황입니다.
물론, moment는 더 이상의 업데이트가 없을 수 있지만, 계속 사용은 할 수 있습니다. 기존에 moment가 적용된 프로젝트가 있을 경우에 잘 동작하겠지만, 당장에 다른 날짜 라이브러리로 변경하기에도 쉽지 않을 수 있습니다.
어쨌든, 대안으로는 아래의 3가지 라이브러리가 있습니다.
- Luxon (주간 다운로드 2,495,739)
- Day.js (주간 다운로드 8,414,025)
- Date-fns (주간 다운로드 12,893,194)
(다운로드 수는 2022-02-04 16:57 기준)
위 3가지가 moment 대안으로 거론되는 라이브러리인데요, Date-fns 라이브러리가 다운로드 수를 1위를 달리고 있습니다.
옛날 현인들께서 말씀하시기를 많이 쓰는데는 그만큼의 이유가 있다 라는 말을 참고하여, Date-fns를 사용하면 어떨까 합니다. Date-fns에 대한 자세한 내용은 아래 공식 홈페이지를 참고해주세요.
'Programming > Etc' 카테고리의 다른 글
AWS EC2 t2 vs t3 차이점 (0) | 2022.08.17 |
---|---|
[Amazon Linux] Let's Encrypt SSL 인증서 (epel-release is available in Amazon Linux Extra topic "epel") (0) | 2022.07.15 |
서버 시간 설정하기 (0) | 2022.02.04 |
Eclipse + Gradle 환경 구축하기 (1) | 2019.10.11 |
Let's Encrypt 무료 SSL 인증서 발급 방법 (0) | 2019.05.20 |