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