반응형
이번 미션을 진행하며 Snowpack을 이용해 리액트 환경을 세팅해보았다.
Snowpack이란?
- 스노우팩은 요즘 떠오르는 프론트엔드 빌드 툴이다.
- 번들러에 의존하지 않고(unbundle) 웹 어플리케이션을 빌드한다.
Snowpack의 장점은?
- 언번들 개발을 해서 빌드 속도가 빠르다.
- 프로젝트 크기가 개발 속도에 영향을 주지 않는다.
- 번들러를 사용할 시, 작은 변경이 생길 때마다 전체 파일을 새로 번들해야한다. 그리고 이는 파일을 저장하고, 브라우저에 표시하기까지 몇 초의 지연을 발생시킨다. 하지만 snowpack은 번들을 하지 않기 때문에 파일의 일부를 변경하면 해당 파일만 새로 빌드한다.
1. snowpack 설치 (prettier까지 설치됨)
npx create-snowpack-app [프로젝트 이름] --template @snowpack/app-template-react
명령어 실행 후, 내가 설정한 프로젝트 이름으로 폴더가 생성된다.
2. 디렉토리 이동
cd snow-test
3. eslint관련 모듈 설치
yarn add -D eslint eslint-config-prettier eslint-plugin-prettier eslint-config-react-app eslint-plugin-react
eslint-config-prettier
eslint에서 prettier와 겹치는 포매팅룰을 삭제
eslint-plugin-prettier
eslint에 prettier의 포매팅 기능을 추가한다. eslint-config-pretteir로 eslint의 원래 포매팅 기능을 없애버리고, eslint-plugin-prettier로 prettier의 포매팅 기능을 사용한다.
eslint-config-react-app
CRA에서 사용된 eslint configuration 추가
eslint-plugin-react
리액트 규칙들을 추가해주는 플러그인(웹 브라우저의 일부로서 쉽게 설치되고 사용될 수 있는 프로그램)
4. eslint 시작
eslint --init
? How would you like to use ESLint? (Use arrow keys)
To check syntax only
> To check syntax and find problems
To check syntax, find problems, and enforce code style
? What type of modules does your project use? (Use arrow keys)
> JavaScript modules (import/export)
CommonJS (require/exports)
None of these
? Which framework does your project use? (Use arrow keys)
> React
Vue.js
None of these
? Does your project use TypeScript? (y/N) N
? Where does your code run? (Press <space> to select, <a> to toggle all, <i> to invert selection)
>(*) Browser
(*) Node
? What format do you want your config file to be in? (Use arrow keys)
> JavaScript
YAML
JSON
The config that you've selected requires the following dependencies:
eslint-plugin-react@latest
? Would you like to install them now with npm? (Y/n) Y
5. 이 작업이 끝나면, 프로젝트 루트 디렉토리에 .eslintrc.js 라는 파일이 생긴다.
module.exports = {
env: {
browser: true,
es2021: true,
node: true,
},
extends: ['react-app', 'prettier'],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 12,
sourceType: 'module',
},
plugins: ['react', 'prettier'],
rules: {},
};
6. babel관련 모듈 설치
yarn add -D @babel/core @babel/core @babel/preset-env @babel/preset-react
7. .babelrc 파일 생성
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
8. 확장자를 jsx에서 js로 바꾸고, import시 확장자 안붙이고 사용하기 위해 다음을 설치
yarn add -D @snowpack/plugin-babel
9. snowpack.config.js 수정
plugins: [
'@snowpack/plugin-react-refresh',
'@snowpack/plugin-dotenv',
// 추가
[
'@snowpack/plugin-babel',
{
input: ['.js', '.mjs', '.jsx', '.ts', '.tsx'], // (optional) specify files for Babel to transform
transformOptions: {
// babel transform options
},
},
],
],
10. 서버 실행
yarn start
출처
https://simsimjae.medium.com/prettier와-eslint설정하기-타입스크립트-설정-110dc8ab94b6
반응형
'React' 카테고리의 다른 글
Immutable이란? (0) | 2021.06.22 |
---|---|
제어 컴포넌트 vs 비제어 컴포넌트 (0) | 2021.06.19 |
Key (0) | 2021.06.16 |
Virtual DOM (0) | 2021.06.15 |
명령형 프로그래밍 vs 선언형 프로그래밍 (0) | 2021.06.12 |