ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React 를 실행시키는 주체는?
    Front-end study/React & Vue 2025. 8. 23. 13:53

     

    Q)npm start 명령어는 정확히 무엇을 시작시키는 거지?web application server 인건가?

    그럼 정확히 어떤 종류의 web application server 이고

    그 web application server 를 시작시키는 exe파일은 어디에 위치하고 있지?

     

    npm start 명령어는 **React 개발 서버(Development Server)**를 시작시키는 명령어입니다.

    이것은 실제 서비스용 웹 애플리케이션 서버(WAS)라기보다는, 개발을 돕기 위한 임시 서버에 가깝습니다.

    질문하신 내용을 하나씩 상세히 설명해 드릴게요.


    ## 1. npm start의 정체: package.json의 약속

    npm start는 npm(Node Package Manager)의 내장 명령어가 아니라, 프로젝트마다 다르게 설정할 수 있는 **스크립트 실행 약속(별명)**입니다.

    React 프로젝트 폴더에 있는 package.json 파일을 열어보면 scripts 부분이 있습니다.

    JSON
     
    // package.json
    {
      ...
      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject"
      },
      ...
    }
    

    여기서 "start": "react-scripts start" 라는 부분이 핵심입니다. 즉, 터미널에서 npm start를 실행하면 npm은 이 설정을 보고 실제로는 react-scripts start 라는 명령을 대신 실행해주는 것입니다.


    ## 2. 어떤 종류의 서버인가요?

    react-scripts start가 실행하는 서버는 Webpack Dev Server (또는 Vite 프로젝트의 경우 Vite Dev Server)입니다.

    이 서버는 전통적인 웹 애플리케이션 서버(WAS)인 Tomcat(Java), IIS(.NET) 등과는 성격이 완전히 다릅니다.

    • 목적: 오직 개발 생산성 향상을 위해 만들어졌습니다.
    • 주요 기능:
      • 빠른 속도: 메모리 위에서 동작하여 매우 빠릅니다.
      • 핫 리로딩 (Hot Module Replacement): 코드를 수정하고 저장하면, 페이지 전체를 새로고침하지 않고 바뀐 부분만 즉시 화면에 반영해줍니다.
      • 실시간 에러 표시: 코드에 오류가 있으면 브라우저 화면 전체에 에러 내용을 상세하게 보여줍니다.
    • 한계: 보안과 성능에 매우 취약하여, 실제 사용자들이 접속하는 운영(Production) 환경에서는 절대 사용하면 안 됩니다.

    ## 3. 실행 파일(.exe)은 어디에 있나요?

    두 가지 오해를 바로잡으면 이해하기 쉽습니다.

    1. Ubuntu(리눅스)에는 .exe가 없습니다: 윈도우와 달리 리눅스에서는 실행 파일에 .exe 확장자를 사용하지 않습니다. 파일에 '실행 권한'이 있으면 그것이 실행 파일입니다.
    2. 실행 파일은 프로젝트 내부에 있습니다: react-scripts라는 명령어는 내 컴퓨터 전역에 설치된 프로그램이 아니라, 현재 React 프로젝트를 위해 npm install 했을 때 다운로드된 수많은 부품 중 하나입니다.

    모든 마법은 프로젝트 폴더 내의 node_modules 폴더 안에서 일어납니다.

    • 실행 스크립트의 위치: [내 프로젝트 폴더]/node_modules/.bin/react-scripts

    npm은 scripts를 실행할 때, 이 node_modules/.bin 폴더를 임시로 PATH에 추가해주기 때문에 우리가 react-scripts start처럼 전체 경로 없이 짧은 명령어를 사용할 수 있는 것입니다.

     

    결론적으로, 이 스크립트는 최종적으로 Node.js를 이용해 Webpack Dev Server 관련 JavaScript 파일을 실행시키는 구조입니다. 따라서 진짜 실행 주체는 시스템에 설치된 node 프로그램이라고 할 수 있습니다.

     
    •  

    *** 결론: 최종적으로 Node.js를 이용해

    Webpack Dev Server 관련 JavaScript 파일을 실행시키는 구조.

    따라서 진짜 실행 주체는 시스템에 설치된 node 프로그램이라고 할 수 있음.***

     

    댓글

Designed by Tistory.