1
2
npm run dev (dev 환경)
npm run build && yarn start (production 환경)

사실 이 차이를 잘은 모르겠어서 정리합니다.

run dev는 CRA(create-react-app)이나, Next처럼 여러 라이브러리가 결합된 프로젝트를 컴파일할 때 쓰는 명령어입니다.

컴파일이라는 표현이 사실 맞지 않습니다. 왜냐하면, 컴파일은 인간이 짜놓은 코드를 어셈블리어(준 기계어)로 변환시켜서 쓰는 작업이라서 웹 프로젝트에서는 쓸 수 없는 표현입니다. 더 정확하게는 트랜스파일이라고 합니다.

이렇게 프로젝느를 한번 트랜스파일 시켜주고 나면, CRA 혹은 Next 내부에서 동작하는 웹서버(express)가 프로젝트를 server할 수 있게 됩니다.

다만, 최적화가 되어 있지는 않기 때문에 느리다고 볼 수 있습니다.
하지만, build를 하면 이야기는 달라집니다. npm run build를 하고 나면, 정젖ㄱ인 파일덩어리들을 그 결과물로 내뱉습니다.

Next 프로젝트는 .next에 그 결과물들을 쭉 저장합니다.
npm run start 할때, 웹서버는 이 정적인 파일들을 serve하게 됩니다.

정리하자면

run dev : 웹 요청에 따라서 그때그때 필요한 페이지를 잘 조합해서 serve한다.
run build & run start : 바벨/웹팩에 의해서 최적화된 정적인 파일들을 만들고 이페이지들을 serve한다.