npm의 중복 모듈 문제

December 29, 2014 | 0 Minute Read

오늘 그동안 개발한 내용들을 모듈별로 잘게 잘라서 github에 올렸는데, 그러다가 npm 모듈이 중복 설치되는 문제를 발견했다.

원래 중복으로 설치된다는 것은 알고 있었는데, 모듈이 각각 따로 로딩되는 문제는 이번에 발견했다. 그러니까, node 모듈 시스템은 해당 모듈이 한 번 로딩이 되면, 그 이후에는 다시 require를 하더라도 그 객체를 그대로 쓰는 것이 큰 장점중에 하나였는데, 이렇게 중복으로 설치되는 경우 로딩도 여러번에 걸쳐서 일어나게 된다.

즉, 메모리를 쓸데없이 잡아먹기도 하고, DB등을 풀링해서 사용하고자하는 경우 이 부분을 간과하면 중복으로 풀링이 일어나는 등의 문제가 생길 수 있다는 것이다.

이를 해결하기위해 npm dedupe 라는 명령어가 있긴 한데, 이건 npm 에 올라와있는 모듈만 처리해주고, 직접 git repo에서 가져오는 경우등은 제대로 처리하지 못하는 문제가 있었다.

npm 개발자들도 이 문제를 알고 있어서 install 단에서 근본적으로 해결하려고 하는 중인 것 같긴한데 언제될지 모르겠고, 관련 툴도 있긴 한데 제대로 안되고.. ㅠㅠ

어쩔 수 없이 간단한 스크립트를 만들어서 해결하긴 했는데, 팀원들도 써야하니 시간이 좀 나면 grunt 등을 이용해 조금이라도 편하게 해결할 수 있는 방법을 고민해봐야할 것 같다.