티스토리 뷰

CRA 없이 Parcel로 프로젝트 셋업하기(with yarn)

 

설치할 툴, 플러그인, 확장 프로그램 등

  • yarn
  • prettier
  • eslint, eslint-plugin-react, eslint-plugin-import
  • babel/core, babel/preset-react, babel/preset-env, babel/plugin-proposal-class-properties
  • parcel-bundler
  • styled-jsx

 

프로젝트 디렉토리 생성(yarn 사전 설치 필요)

package.json, yarn.lock 파일 등 생성

mkdir react-project
yarn init -y 

 

 

프리티어 설정(Code Formatter)

yarn add prettier -D
  • D 플래그로 devDependencies에 추가. 트랜스파일러 관련 모듈(ex. babel)이나 운영이 아닌 개발 단계에서만 필요한 의존성 모듈들은 devDependencies에 설치해야 한다.
"scripts" {
  "format": "prettier --write \"./**/*.{js,html,css}\""
}
  • vscode 플러그인 설정
    • settings > format 검색 > Editor: Format on save 체크
    • settings > require config 검색 > Prettier: require config 체크
    • 프로젝트 폴더에 .prettierrc 파일 생성 후 { } 브라켓만 적고 세이브
  • prettier —-write
    • rewrite all processed files in place.
  • ./**/*.{js,html,css}
    • glob(유닉스 스타일 경로명 패턴).
    • ** 디렉토리 및 서브디렉토리에서 *.{js,html,css} 파일명이 0개 이상 캐릭터를 가지고 확장자가 js, html, css인 파일을 찾는다.

 

eslint 설정 (Linter for javascript)

프리티어 스타일 코드를 적용하는 eslint 패키지 설치

yarn add -D eslint eslint-config-prettier

.eslintrc.json 파일 생성 후 설정 추가

{
  "extends": ["eslint:recommended", "prettier", "prettier/react"],
  "plugins": [],
  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "browser": true,
    "node": true
  }
}

 

Parcel-Bundler 설치

번들러 설치 후 package.json에 스크립트 추가

yarn add -D parcel-bundler
"scripts" {
  "dev": "parcel index.html"
}

 

React 설치 및 eslint 플러그인 추가

yarn add react react-dom

index.html 파일 바디 태그 안에 설정

<div id="root"></div>
<script src="index.js"></script>

index.js 파일 설정(App.js가 루트 컴포넌트)

import React from 'react';
import ReactDOM from 'react-dom';
import App from './src/App'

ReactDOM.render(<App />, document.getElementById("root"));

react 관련 eslint 플러그인 추가

yarn add -D babel-eslint eslint-plugin-import eslint-plugin-react

.eslintrc.json 파일에 추가

{
  "extends": [
    "eslint:recommended",
    "plugin:import/errors",
    "plugin:react/recommended",
    "prettier",
    "prettier/react"
  ],
  "rules": {
    "no-console": "warn"
  },
  "plugins":["react", "import"],
  "parserOptions": {
    "ecmaVersion":2018,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "es6": true,
    "browser": true,
    "node": true
  },
  "settings": {
    "react": {
      "version": "detect"
    }
  }
}

 

바벨 설치 및 eslint 플러그인 추가

yarn add -D babel-eslint @babel/core @babel/preset-env @babel/plugin-proposal-class-proterties @babel/preset-react

.babelrc 생성

{
  "preset": ["@babel/preset-react", "@babel/preset-env"],
  "plugins": ["@babel/plugin-proposal-class-properties"]
}

.eslintrc.json에 추가

"parser": "babel-eslint"
  • eslint는 es6까지만 지원하므로 그 이상의 스펙을 사용하려면 babel-eslint을 설치해야한다.

 

styled-jsx 설치 및 바벨 설정 추가

yarn add styled-jsx

.babelrc에 추가

{
  "plugins": ["styled-jsx/babel"]
}

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함