320x100
320x100

Lint

: 소스 코드에 문제가 있는지 탐색하는 작업

: 자바스크립트와 같이 컴파일 과정이 없는 인터프리터 언어의 경우 런타임 에러가 발생할 수 있기 때문에 린트 작업을 통해 사전에 에러를 최대한 잡아줘야한다

: 예전에는 JSLint나 JSHint와 같은 린터들을 많이 사용했었으나 최근에는 ESLint를 많이 사용

 

 

 

 

ESLint 설치 및 세팅

- 설치 및 세팅

// npm 프로젝트 초기화
npm init -y

// esLint를 개발 의존성으로 설치
npm i -D eslint

// eslint 초기화
node_modules/.bin/eslint --init
? How would you like to use ESLint? To check syntax and find problems
? What type of modules does your project use? JavaScript modules (import/export)
? Which framework does your project use? None of these
? Does your project use TypeScript? No
? Where does your code run? Node
? What format do you want your config file to be in? JavaScript
Successfully created .eslintrc.js file in /temp/learn-eslint

 

- .eslintrc.js

module.exports = {
  env: {
    es6: true,
    node: true,
  },
  extends: "eslint:recommended",
  globals: {
    Atomics: "readonly",
    SharedArrayBuffer: "readonly",
  },
  parserOptions: {
    ecmaVersion: 2018,
    sourceType: "module",
  },
  rules: {},
};

: ESLint 설정 파일 (프로젝트 최상위 경로에 생성됨)

: extends (다른 ESLint 설정을 확장해서 사용할 때 수정 / 주로 airbnb나 prettier를 사용)

: rules (본인 프로젝트에 덮어쓰고 싶은 규칙 정의 / https://eslint.org/docs/latest/rules/ 참조)

 

 

 

 

 

 

ESLint를 터미널에서 사용

- index.js

var foo = bar;

 

- ESLint 실행

$ node_modules/.bin/eslint index.js

/temp/learn-eslint/index.js
  1:5   error  'foo' is assigned a value but never used  no-unused-vars
  1:11  error  'bar' is not defined                      no-undef
  1:15  error  Unnecessary semicolon                     no-extra-semi

✖ 3 problems (3 errors, 0 warnings)
  1 error and 0 warnings potentially fixable with the `--fix` option.

: ESLint 실행 시 --fix 옵션을 사용하면 코드까지 교정

 

 

 

 

 

ESLint를 프로젝트 단계에서 사용

- package.json

  "scripts": {
    "lint": "eslint ."
  },

 

- .eslintignore

node_modules

: ESLint에서 검사를 수행하지 않을 파일이나 디렉터리 목록 파일 (생성해야함)

 

 

 

 

ESLint 강제화

- husky 설치

// yarn을 사용하는 경우
yarn add --dev husky

// npm을 사용하는 경우
npm install --dev huskey

 

: husky (git 커맨드 실행 시 특정 스크립트를 실행시켜주는 도구)

 

- husky 초기화

npx husky install

 

- hook 설정

npx husky add .husky/pre-commit "yarn lint"

: git에 commit 하기전에 실행할 명령어를 추가 (아래 파일이 추가됨)

 

- package.json에 스크립트 추가

  "scripts": {
    "lint": "eslint \"**/*.{js,jsx,ts,tsx}\"",
  },

 

 

 

 

 

코드 포맷터

: 개발자가 작성한 코드를 정해진 코딩 스타일을 따르도록 자동으로 변환해주는 도구

 

- Prettier

: 자바스크립트에서 가장 많이 사용하는 코드 포맷터

: 기존 포맷터와 달리 디폴트로 정해놓은 코딩 스타일에서 벗어나지 않을 수 있음

 

 

 

 

 

Prettier 설치 및 세팅

// 개발 의존성으로 설치
npm i -D prettier

 

- Prettier 터미널에서 실행

npx prettier "파일명.js"

: --write 옵션을 실행하면 해당 파일의 내용이 포맷팅된 코드로 대체됨

 

- .prettierignore

node_modules/
package-lock.json

: Prettier에서 포맷팅 하지 않을 파일이나 디렉터리 지정

 

 

 

 

 

ESLint와 Prettier 통합 및 사용

// ESLint와 통합하기 위해 필요한 패키지를 개발 의존적으로 설치
npm i -D eslint-config-prettier eslint-plugin-prettier

 

- .eslintrc.js 설정 추가

{
  ...,
  "extends": ["plugin:prettier/recommended"]
}

: 기존에 다른 옵션이 있던 경우, 배열 뒤나 앞에 추가 (앞일 수록 해당 설정의 우선순위가 높아짐)

 

 

 

 

 

터미널 명령 없이 IDE에서 사용하기

- VSCode

 

Prettier - Code formatter - Visual Studio Marketplace

Extension for Visual Studio Code - Code formatter using prettier

marketplace.visualstudio.com

: Ctrl + Shift + f를 누르면 현재 보고있는 파일에 대해 prettier가 포맷팅을 수행해줌

 

- Atom

 

Sunsetting Atom

We are archiving Atom and all projects under the Atom organization for an official sunset on December 15, 2022.

github.blog

 

- Sublime Text

 

JsPrettier - Packages - Package Control

Browse Js​Prettier JsPrettier is a Sublime Text Plug-in for Prettier, the opinionated code formatter. Details Installs Total 173K Win 70K Mac 72K Linux 31K Aug 19 Aug 18 Aug 17 Aug 16 Aug 15 Aug 14 Aug 13 Aug 12 Aug 11 Aug 10 Aug 9 Aug 8 Aug 7 Aug 6 Aug

packagecontrol.io

 

 

 

 

 

 

Reference

 

ESLint로 소스 코드에 숨어있는 문제 찾기

Engineering Blog by Dale Seo

www.daleseo.com

 

코드 포맷팅은 그냥 Prettier에게 맡기세요

Engineering Blog by Dale Seo

www.daleseo.com

 

[husky] husky version 8 설치하기

연관 내용\[ESLint/Prettier 설치 방법]\[husky 사이트]husky는 정해진 규칙에 맞지 않으면 commit을 거절한다.🚨 package.json과 .git이 있는 경로에서 진행해야 한다.설치할 디렉토리의 터미널에서 설치 명령

velog.io

 

husky: git hook을 통한 테스트 및 린트 자동화

husky는 깃 훅에 따라 원하는 동작을 하게 도와주는 패키지입니다. git add나 commit, push가 시행되기 전이나 후에 원하는 스크립트를 실행시켜주죠. 오늘은 husky를 사용하는 방법에 대해 알아보겠습

blog.pumpkin-raccoon.com

 

300x250
728x90

'Programming > NodeJS' 카테고리의 다른 글

Express 서버와 Swagger 연동하기  (0) 2023.08.27
swagger에 대해 알아보자  (0) 2023.08.27
NodeJS 란?  (0) 2023.06.05
NodeJS 백로그 관리  (0) 2023.05.15
Express HTTP 에러 핸들링  (0) 2023.04.24