의존성(dependency)은 어떤 작업이나 프로그램이 다른 구성 요소를 필요로 하는 관계다. 라이브러리를 불러오는 코드뿐 아니라 외부 서버에서 받는 글자체와 이미지도 웹 작업의 작동 조건으로 살펴볼 수 있다. 화면에 보이는 내용이 적어도 불러오는 외부 파일은 많을 수 있다.
- npm의
package.json은 필요한 패키지와 버전 범위를 적는 곳이다.dependencies와devDependencies는 일반적인 사용에 필요한 것과 개발 과정에 필요한 것을 구분하지만, 실제 배포 방식도 함께 읽어야 한다. 이름을 어느 칸에 썼다는 사실만으로 최종 웹사이트의 요구 조건을 모두 알 수는 없다. - 직접 선택한 패키지가 다시 다른 패키지를 필요로 하기도 한다. 내가 적은 목록과 실제로 설치되는 목록의 길이가 달라지는 이유다. 버전을 고정한 기록은 다시 설치할 조건을 좁히는 데 도움이 되지만 외부 서비스의 지속적인 운영까지 보장하지 않는다.
- 빌드 도구가 만든 정적 파일을 배포하는 경우와 서버에서 매번 계산하는 경우는 요구 조건이 다르다. ‘만들 때 필요한 것’과 ‘방문자가 열 때 필요한 것’을 구분한다. 웹사이트 인수인계에 이 구별을 남기면 다음 사람이 모든 도구를 무조건 설치하는 일을 줄일 수 있다.
- 외부 글자체나 이미지가 오지 않는 상황을 사본에서 시험해보자. 무엇이 없어졌는지와 무엇이 계속 읽히는지를 구분하고, 필요한 대안은 폴백으로 마련한다.
- 쓰는 이유, 현재 버전, 교체할 때 고칠 위치를 의존성의 주소록에 적어두자.