ESLint와 Prettier 설정

카테고리 Settings

📌 ESLint, Prettier란?

ESLint는 vscode에서 코드를 작성하다가 문법적으로 오류가 발생한 곳을 사전에 미리 알려주는 도구이며, prettier는 ESLint가 알려준 오류를 즉각 고쳐주는 도구이다.

🔨 Prettier 사용 방법

프리티어 패키지를 설치한다.

1
npm i -D prettier

프리티어 구성 파일

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
// .prettierrc.cjs
module.exports = {
// 화살표 함수 식 매개변수 () 생략 여부 (ex: (a) => a)
arrowParens: "always",
// 닫는 괄호(>) 위치 설정
// ex: <div
// id="unique-id"
// class="contaienr"
// >
htmlWhitespaceSensitivity: "css",
bracketSameLine: false,
// 객체 표기 괄호 사이 공백 추가 여부 (ex: { foo: bar })
bracketSpacing: true,
// 행폭 설정 (줄 길이가 설정 값보다 길어지면 자동 개행)
printWidth: 80,
// 산문 래핑 설정
proseWrap: "preserve",
// 객체 속성 key 값에 인용 부호 사용 여부 (ex: { 'key': 'xkieo-xxxx' })
quoteProps: "as-needed",
// 세미콜론(;) 사용 여부
semi: true,
// 싱글 인용 부호(') 사용 여부
singleQuote: true,
// 탭 너비 설정
tabWidth: 2,
// 객체 마지막 속성 선언 뒷 부분에 콤마 추가 여부
trailingComma: "es5",
// 탭 사용 여부
useTabs: false,
};
  • 추가적인 부분은 공식문서를 참고하면 된다.

프리티어 제외 파일

1
2
3
4
// .prettierignore
dist;
build;
coverage;

🔨 ESLint 사용방법

ESLint 설치 및 초기화

1
npm init @eslint/config

ESLint 구성 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// .eslintre.cjs
module.exports = {
// ...
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react/jsx-runtime",
"plugin:@typescript-eslint/recommended",
],
settings: {
react: { version: require("react/package.json").version },
},
rules: {
"@typescript-eslint/no-var-requires": "off",
},
};

ESLint 플러그인

1
npm i -D eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-prettier eslint-config-prettier

React 개발에 필요한 패키지와 프리티어 구성 통합을 위한 패키지를 설치한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// .eslintrc.cjs
module.exports = {
// ...
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react/jsx-runtime",
"plugin:@typescript-eslint/recommended",
"plugin:jsx-a11y/recommended",
"plugin:prettier/recommended",
"prettier",
],
plugins: ["react", "@typescript-eslint", "jsx-a11y"],
};

역시 ESLint 제외파일도 지정할 수 있다.

1
2
3
4
// .eslintignore
dist;
build;
coverage;

📌 저장할 때, prettier 자동으로 조절해주기

vscode에서 Code - Preferences - settings - default formatter - prettier로 설정

댓글 공유

loader(로더) 설정하기

카테고리 Settings

📌 Loader(로더)란?

webpack은 기본적으로 Javascript, JSON 파일만 해석할 수 있다.

webpack이 로더를 사용하여 번들링 할 때에 다른 타입의 파일을 처리하거나 유효한 모듈로 변환하여 애플리케이션에서 사용할 수 있도록 도와준다.

계속 읽기

webpack 설정하기

카테고리 Settings

📌 webpack 이란?

모듈로 관리하는 파일들을 번들링 해주는 툴이다.

🔨 사용방법

명령어 환경 구성

Webpack 모듈 번들러를 명령어 환경에서 사용하기 위해 webpack, webpack-cli를 설치합니다.

1
$npm i -D webpack webpack-cli

번들 명령어 등록

package.json 파일에 webpack 번들링을 수행하는 bundle 명령을 등록합니다.

1
2
3
4
5
6
7
8
9
{
...
"scripts": {
"webpack:config": "webpack --target=browserslist --entry=./src/main.js --output-path=public",
"webpack:dev": "npm run webpack:config -- --mode=development",
"webpack:prod": "npm run webpack:config -- --mode=production"
},
...
}
  • entry 폴더와 output 폴더 경로를 지정해주면 된다.
  • dev는 개발환경 번들링 작업을 위한 명령이고 prod는 배포환경을 위한 번들링 작업이다. prod의 결과물은 배포 최적화되어 있다.
  • target 속성은 어떤 브라우저 환경을 대상으로 번들링할 것인지를 명시해주는 것이다. 프로젝트 루트 위치에 .browserslistrc 파일을 생성한다.
1
2
3
4
> 0.5% in KR
last 2 versions
not dead
ie 11

명령 실행

1
2
3
$npm run webpack:dev

$npm run webpack:prod

🔨 Webpack 구성 파일

기본적인 구성으로도 번들링 훌륭하지만 복잡한 구성을 위해서 구성파일을 별도로 작성해 관리하는 것이 좋습니다.

공통 구성 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// webpack/common.js
import { resolve } from "node:path";

const commonConfig = {
target: "browserslist",
entry: {
main: resolve("src/main.js"),
},
output: {
path: resolve("public"),
filename: "[name].bundle.js",
},
};

export default commonConfig;

개발 구성 파일

1
2
3
4
5
6
7
8
9
10
// webpack/dev.js
import { merge } from "webpack-merge";
import commonConfig from "./common.js";

const devConfig = merge(commonConfig, {
mode: "development",
devtool: "eval-cheap-source-map",
});

export default devConfig;

빌드 구성 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// webpack/prod.js
import { merge } from "webpack-merge";
import commonConfig from "./common.js";

const prodConfig = merge(commonConfig, {
mode: "production",
devtool: false,
output: {
...commonConfig.output,
filename: "[name].min.js",
},
});

export default prodConfig;

개발, 빌드 명령 등록

1
2
3
4
5
6
7
// package.json
{
"scripts": {
"bundle": "webpack bundle -c webpack/dev.js",
"build": "webpack build --progress -c webpack/prod.js"
}
}

이제 기본 webpack 구성이 아닌 직접 생성한 파일을 통해서 번들링 작업을 해줄 수 있다.

🔨 Webpack 개발 서버 구성

Webpack 전용 개발 서버를 구동하기위해 패키지를 설치한다.

1
$npm i -D webpack-dev-server

서버 구성 파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// webpack/server.js
const devServer = {
host: "localhost",
port: 5000,
hot: true,
open: false,
compress: true,
liveReload: true,
static: ["public"],
historyApiFallback: true,
client: {
logging: "info",
overlay: true,
reconnect: 3,
},
watchFiles: {
paths: ["src/**/*.*", "public/**/*.*"],
},
};

export default devServer;

서버 구성 파일 불러오기

개발 환경에서 서버 구성 파일을 불러온다.

1
2
3
4
5
6
7
8
9
10
11
12
// webpack/dev.js
import { merge } from "webpack-merge";
import commonConfig from "./common.js";
import devServer from "./server.js";

const devConfig = merge(commonConfig, {
mode: "development",
devtool: "eval-cheap-source-map",
devServer,
});

export default devConfig;

서버 구동 명령어 등록

1
2
3
4
5
6
7
8
9
10
// package.json
{
"scripts": {
"start": "npm run server -- --open",
"dev": "npm run server",
"server": "webpack server -c webpack/dev.js",
"bundle": "webpack bundle -c webpack/dev.js",
"build": "webpack build -c webpack/prod.js"
}
}

HTML Entry 수정

1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<!-- ... -->
<script type="module" src="main.bundle.js"></script>
</head>
<!-- ... -->
</html>

댓글 공유

Babel

카테고리 Settings

📌 babel

Babel은 자바스크립트 컴파일러로 아래의 역할을 하여 브라우저 호환 문제를 해결한다.

  • 구문 변환
  • 대상 환경에 누락된 폴리필 기능
  • 소스 코드 변환
계속 읽기

homebrew

카테고리 Settings

homebrew

mac, Linux에서 제공하지 않는 패키지를 설치할 수 있도록 도와주는 패키지 관리자이다. without requiring sudo.

사용하는 이유

Homebrew 전용 디렉터리에 패키지들을 설치하여 관리한다.

macOS에서 앱, 폰트, 플러그인, 오픈소스 등의 설치를 위해 여기로 끌어다 놓으세요.. 라는 행동을 할 필요가 없다.

설치

$brew install wget

이제 Cli 환경에서 brew를 사용하여 프로그램을 설치할 수 있다.

ex) git설치 - $brew install git

댓글 공유

Snippets

카테고리 Settings

Snippets

코드를 작성하다가 재사용되는 코드가 있다면 snippet으로 등록하여 간단한 단축키로 입력하여 코드의 생산성을 높힐 수 있다.

snippets-generator.app

아래 사이트는 snippets을 Editor에 맞게 쉽게 양식을 설정해주는 사이트이다.

https://snippet-generator.app/

설정 방법

vscode 명령 팔레트를 실행하여 configuration snippets를 들어간다.

원하는 언어 환경을 선택하고 파일을 만들어서 위 사이트에서 양식을 붙여넣어주면 된다. 이 때, 글로벌 환경에서 사용하고 싶다면 글로벌 환경으로 설정하고 파일을 만들어서 하면 된다.

관리

snippets 관리는 extension을 사용하여 편리하게 관리할 수 있다.

https://marketplace.visualstudio.com/items?itemName=robole.snippets-ranger

댓글 공유

  • page 1 of 1

loco9939

author.bio


author.job