SPA에서 devDependency

박기완·2022년 7월 4일
2

devDependencies. 개발 환경에서 사용하는 패키지 목록이다. 배포된 코드가 사용하지 않는 의존성이라면 devDependencies에 넣어서 불필요한 설치를 막을 수 있다.
리액트 개발 환경에서 이 devDependencies의 분류에 의문이 들었다. SPA 코드는 번들링 되기 때문에 모든 의존성이 몇 개의 JavaScript 파일로 묶인다. node_modules를 주렁주렁 달고 배포하는 게 아니라 번들링 된 파일 몇 개만 배포하면 된다. 그렇기 때문에 dependencies의 의존성만 설치하는 일 자체를 하지 않아도 된다.
그동안 빌드 이후에도 필요한 의존성을 dependencies에 넣고, 그렇지 않다면 devDependecies에 넣어 왔다. 빌드된 파일을 배포하고 다른 패키지에서 설치하여 사용하는 일반적인 패키지에서는 유효한 분류였다. 하지만 빌드 이후 사용하는 의존성이 없는 SPA는 이 분류에 따르면 모든 의존성이 devDependencies에 들어가야 한다. 심지어 react까지도. devDependencies에 있는 react는 너무 어색하지 않은가?
반대로 빌드에 필요한 파일을 dependencies로 분류하면 어떨까? 린트니 테스트니 개발 과정에서 필요한 것이고, SPA의 본질은 빌드니까 말이다. 그럼 그동안 열심히 devDependencies로 분류해왔던 typescriptwebpackdependencies가 된다. 너무 낯설어서 아직 적응이 안 된다.
Node.js 패키지 의존성을 트리로 나타낸다면 SPA들은 leaf node이다. leaf 노드이기 때문에 다른 패키지에서 사용하는 방법론이 조금 안 맞는 것 같다. 이런 leaf node만을 위한 패키지 매니저를 만들어보면 어떨까?

0개의 댓글