티스토리 뷰

프로젝트 셋팅을 해보도록 하겠습니다. 먼저 nodejs(nodejs란)와 에디터가 설치되어 있다는 가정 하에 시작하겠습니다. 

저는 에디터로 vscode를 사용하고 있습니다. (vscode의설치법이 궁금하시다면 여기를 클릭하여 주세요!)

 

바닥부터 시작하는것이기 떄문에 처음에 복잡할 수 있습니다. 


 

원하는 folder path를 설정한 후 프로젝트 폴더를 만들어 줍니다. C:\Users\User\workspace경로에 react-todo폴더를 만든 후 위의 경로에서 진행 하였습니다. (User는 사용자의 이름)

npm init -y

npm init : 현재 디렉토리를 Node.js 프로젝트로 초기화하는 명령어로 package.json 파일을 생성합니다. package.json 파일은 현재 Node 프로젝트에 대한 정보를 담고 있는 파일입니다. -y option은 init을 간단하게 할 수 있는 명령어입니다.

위와 같은 결과를 얻을 수 있습니다. 자 이제 이 폴더를 vscode에서 열어보겠습니다.  

code .

code . 명령어로 윈도우 cmd창에서 바로 vscode를 실행 시킬 수 있습니다. 

 

폴더에 package.json파일 하나만 있습니다. 정말 바닥부터 리액트를 시작하는 것입니다. 사실 바닥부터 시작하면 설명드릴것이 많고 하나하나 다 설명하면서 진행하기엔 가독성이 너무 떨어진다고 판단되어 설명이 길어질만한 부분들은 링크를 걸어가며 넘어가도록 하겠습니다. 

 

 

맨땅에 리액트 프로젝트를 진행하기 위해서는 설치해야 되는 모듈이 몇가지 있습니다. 크게 나눠보자면

  • react 관련 모듈
  • webpack 관련 모듈
  • babel 관련 모듈

react 관련 모듈 : react를 사용하기 위해 꼭 필요한 react 관련 모듈입니다. 

 

webpack 관련 모듈 : webpack은 많은 js css 파일들을 묶어주는 역할을 합니다.

 

babel 관련 모듈 : react는 es6버전은 자바스크립트를 모든 브라우져에서 호환가능한 es5버전으로 바꿔주는 역할을 합니다. 

 

1. webpack 설정

npm i -D webpack webpack-cli babel-loader html-webpack-plugin
//webpack.config.js

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  //mode
  entry: "./index.jsx",
  output: {
    path: path.join(__dirname, "/dist"),
    filename: "index_bundle.js"
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: ["babel-loader"],
        exclude: /node_modules/
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./index.html"
    })
  ],
  resolve: {
    extensions: [".js", ".jsx"]
  }
};

 

웹팩 설정은 크게 6가지로 나뉩니다. 

  • mode: development | production 인지 명시해주시면 됩니다. 저는 여기서 명시하지 않고 package.json에서 명시할 예정입니다. 나중에는 development 와 production 모드를 분리해서 각각의 config file을 만들 예정입니다.
  • entry: 어디를 root로 삼아서 웹팩을 진행할지 결정하는 곳 입니다. 
  • output: bundle된 파일을 어디에 위치시킬지 결정하는 곳입니다.
  • module rule: 파일들을 합칠때 확장자별로 rule을 결정해주는 곳입니다. 나중에 css파일 png파일등 각각의 확장자별로 룰을 정해줄 것입니다.
  • plugin: 웹팩을 하는데 있어서 도움을 주는 플러그인들입니다.
  • resolve: 웹팩이 알아서 경로나 확장자를 처리할 수 있게하는 곳입니다. resolve에 확장자가 있으면 import할때 확장자를 생략 가능합니다.  

 

2. babel 설정

npm i -D @babel/core @babel/preset-env @babel/preset-react

바벨을 설정하기 위해 .babelrc 파일을 생성하고 아래와 같이 적습니다.

{
  "presets": [
    [
      "@babel/preset-env",
      { "targets": { "browsers": ["last 2 versions", ">= 5% in KR"] } }
    ],
    "@babel/react"
  ]
}

프리셋은 플러그인들의 집합체라고 생각하시면 되고 브러우져 타겟을 정해서 과하게 오버피팅되는걸 막아줍니다.

 

3. package.json 설정 

npm i -D webpack-dev-server rimraf

스크립트 부분을 수정합니다. rimraf는 운영체제 상관없이 폴더를 지우기위한 명령어이고

production 모드인지 development 모드인지 웹팩으로 빌드할 때 스크립트에서 정해줍니다. 

{
 // "main": "index.js", 삭제

...
  "scripts": {
    "start": "webpack-dev-server --mode development --open",
    "prebuild": "rimraf dist",
    "build": "webpack --progress --mode production"
  },
  ...
}

 

4. react 설정

npm i react react-dom

./index.html 파일을 생성하고 아래와같이 적어줍니다. 리액트는 div id= app 에 들어가게 됩니다.

이 웹페이지의 root인것입니다.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

 

./index.jsx 파일을 생성합니다.

import React from 'react';
import ReactDOM from 'react-dom';

const App = () => {
  return <h1>Hello World!</h1>;
};
ReactDOM.render(<App />, document.getElementById('app'));

ReactDom 이 App component를 document에 삽입하는것을 알 수 있습니다. 

 

npm start 로 실행하면 잘 실행되는것을 볼 수 있습니다. 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함