추가로 node_modules라는 폴더도 생성되었습니다. 그 안에 설치한 패키지들이 들어 있습니다. 분명히 Express 하나만 설치했는데 패키지가 여러 개 들어 있습니다. 이는 Express가 의존하는 패키지들입니다. 패키지 하나가 다른 여러 패키지에 의존하고, 그 패키지들은 또 다른 패키지들에 의존합니다. 이렇게 의존 관계가 복잡하게 얽혀 있어 package.json이 필요한 것입니다.
▲ 그림 5-3 node_modules 폴더 안의 패키지
▲ 그림 5-4 의존 관계
package-lock.json이라는 파일도 생성되었습니다. 내용을 보면, 직접 설치한 express 외에도 node_modules에 들어 있는 패키지들의 정확한 버전과 의존 관계가 담겨 있습니다. npm으로 패키지를 설치, 수정, 삭제할 때마다 패키지들 간의 정확한 내부 의존 관계를 이 파일에 저장합니다. 즉, package.json은 직접 설치한 패키지를 기록하는 파일이고, package-lock.json은 패키지 간의 의존 관계를 명시한 파일입니다.