Node.js 8.x.xLTS에서 10.15.1LTS 대응

팀에서 사용하는 서버의 Node.js 버전이 10점대로 올라가면서 예전부터 사용하고 각각의 사유가 있어 업데이트 하지 못한 일종의 레거시(레거시가 되다니 ㅠㅠ) 프로젝트들이 오류를 내뱉으며 정상 구동이 되지 않았다.
가장 큰 문제는 Gulp를 통해 SCSS빌드가 되지 않는 문제였고 gulpfile.js만이라도 팀에서 지속적으로 관리되는 코어와 동일하게 맞추고, 코어는 HTML, CSS, JS를 다 린트하고 빌드하지만 기존 레거시 프로젝트는 CSS만 빌드하고 자바스크립트는 린트만 하게 되어 있어 오히려 간소해졌다.

그리고나서 빌드는 성공하는데 깃랩의 파이프라인이 계속 실패 떠서 확인해보니 보안 취약점이라고 나오는 부분들이 잔뜩..

일단 npm audit을 확인하여 취약하다고 표시된 사항들을 모두 업데이트 해줬다. (package-lock.json의 역할을 잘 몰랐는데 이때 업데이트가 되더라!)

문제는 시키는대로 했더니 실 사용에 문제가 생긴 프로젝트도 있었다.

Express 3.x.x -> Express 4.x.x

가장 오래된 프로젝트에서 가장 큰 문제가 발생했는데 Express 업데이트로 인한 사항이었고 오류 내역을 보니 app.router를 사용한 부분이 문제가 되었는데 이 부분을 주석처리해봤더니 허무하게 바로 해결되버렸다.
당시엔 큰 관심을 두지 않았지만 Express 3점대에서 4점대로 올리는 문제가 가볍지 않다고 하였던걸로 기억이 되서 이상하다 판단이 들어 조금 더 찾아보니 app.router는 4점대부터는 굳이 지정해주지 않는다고 되어 있다. 혹시 몰라 여러 방면으로 테스트 해봤지만 다행히 해당 프로젝트에도 큰 문제가 발생하지 않아 이렇게 마무리. (참고글)

UA-Parser

UA-Parser 디펜던시는 4년째 관리되지 않고 있고, 기존 프로젝트에 UA-Parser 사용 목적이 꼭 필요한 사항이 아니라서 관련 사항들 제거해버렸다. (최신 코어엔 없는 들어가있지도 않은 역할)

Jade

Jade 디펜던시에서 사용중인 uglify.js가 문제되어 pug로 바꿔주었는데 pug와 Jade가 정말 완전히 동일한 것인지 디펜던시와 세팅 바꾸고 확장자만 바꾸는 것으로 작업이 끝났다. (조금 더 엄격한지 애초에 잘못 작업된 문법에만 오류를 뱉음..)
근데 gitlab에서 히스토리 관리 문제와 취약점이 low 레벨이어서 서버내 빌드에 문제가 없는 점을 들어 pug로 교체하는 것은 보류하기로 결정되어 다시 돌렸다.