Create React App 을 이용해서 프로젝트를 시작하게 되면 package.json
파일에 모든 패키지들이 dependencies
에 추가되어 있습니다.
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"@types/jest": "^24.0.0",
"@types/node": "^12.0.0",
"@types/react": "^16.9.0",
"@types/react-dom": "^16.9.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1",
"typescript": "~3.7.2"
},
왜 devDependencies
에 @testing-library/react
같은걸 넣지 않았을까요?
아래와 같이 CRA Github에 누군가 질문을 했는데, Dan Abramov이 이렇게 답변했습니다.
https://github.com/facebook/create-react-app/issues/6180
Node 앱이면 dependencies 와 devDependencies 를 나누는게 의미가 있는데, CRA의 경우 결과물 자체가 static bundle이고, build시에만 모든 package를 이용하기때문에 궅이 따지자면 모든 dependencies가
development dependencies
입니다.
둘 중 어느곳에 넣어도 상관은 없지만, 일부 배포 스크립트가 동작하지 않을 수도 있기에 의도적으로 모든 패키지를 dependencies
에 넣었다고 합니다. :)
저도 그 글 어제 봤어요! 근데 테스팅 라이브러리 같은것들은 왜 dependencies 에 있는지 궁금해요. 얘네들은 devdependencies 에 있어도 될것 같은데.. staging은 테스트를 수행하겠지만 정말 production 빌드를 할때는 테스트를 안하니까 dev로 가는게 맞다고 생각했어요.