Programming/Etc

moment는 역사속으로 (지원중단)

통통만두 2022. 2. 8. 09:43
반응형

개인적으로 JavaScript에서 날짜 관련해서 moment를 꽤나 신뢰하고 오랫동안 사용했습니다만, 최근에 moment가 더 이상의 지원은 없다라는 사실을 접하고 많이 슬펐습니다. ㅠㅠ

 

npm

 

물론 moment를 사용하면서도 불편한 점도 없이 않아 있었지만, 나름 훌륭하다고 생각했고 무엇보다도 손에 익다보니 편했던 것이 사실입니다. 그래서 더더욱 슬프게 느껴졌습니다. 그러면 왜 지원을 중단했는지, 대안으로는 무엇이 있는지 살펴보도록 하겠습니다.

 

일단, npm에 들어가보면 마지막 업데이트가 2020-10-06으로 되어 있습니다. 그리고 주간 다운로드 수가 1,800만... 물론 업데이트가 중단된 것이지 기존의 moment 라이브러리는 계속 사용할 수 있습니다.

https://momentjs.com/docs/#/-project-status/

 

Moment.js | Docs

moment.relativeTimeThreshold(unit); // getter moment.relativeTimeThreshold(unit, limit); // setter duration.humanize has thresholds which define when a unit is considered a minute, an hour and so on. For example, by default more than 45 seconds is consider

momentjs.com

 

요약하자면,

  • 너무 오래된 디자인과 신규 기능 추가의 어려움
    • 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에 대한 자세한 내용은 아래 공식 홈페이지를 참고해주세요.

https://date-fns.org/

 

Modern JavaScript Date Utility Library

date-fns provides the most comprehensive yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.

date-fns.org

 

반응형