vscode 스니펫 추가하기

twp·2023년 11월 8일
0

프로젝트의 구조가 잡히면 화면과 기능이 추가되는 경우 반복적인 작업이 되는 경향이 있습니다.

프론트엔드 코드의 가장 기본적인 역할은 데이터를 화면에 보여주는 것이고, 이를 위해 반복되는 코드는 컴포넌트 선언 외에도 커스텀 훅 선언, API 호출 함수 및 파라미터와 응답 타입 선언, 디버깅을 위한 변수 로깅 등이 있습니다.

vscode에서는 자주 사용하는 코드 조각(code snippet)을 지정해놓고 특정 단축어 또는 단축키로 불러올 수 있는 기능을 제공합니다. 코드를 빨리 쓰는 것과 생산성이 반드시 정비례한다고 볼 수는 없겠지만, 반복적인 작업을 줄이고 빠르게 필요한 코드를 불러올 수 있게 됨으로써 로직에 좀 더 신경쓸 수 있게 되는 것 습니다.

업무 중에 자주 쓰는 몇 개의 스니펫이 있는데, 그 중 리액트 컴포넌트를 선언하는 코드 스니펫을 작성해보도록 하겠습니다.

스니펫 추가하고 사용하는 방법

1. 스니펫 파일 열기

vscode를 실행하고 코드 > 기본 설정 > 사용자 코드 조각 구성 을 누르면 편집할 코드 조각 파일을 선택할 수 있는 드롭다운 메뉴가 표시됩니다.

컴포넌트는 .tsx 파일에 작성하므로 typescriptreact.json을 선택합니다.

작성되어 있는 예시 코드를 보면, 어떻게 항목을 추가할 수 있는지 쉽게 이해할 수 있습니다. 각 항목은 prefix, body, description 세 개의 필드로 구성됩니다.

  • prefix: 해당 스니펫을 불러오기 위한 단축어
  • body: 해당 스니펫을 불러왔을 때 편집기에 작성되는 내용
  • description: 해당 스니펫에 대한 설명

2. 스니펫 작성하기

새로운 스니펫을 작성하기 위해 component 필드를 추가합니다.

{
  "component": {
    "prefix": "$component",
    "body": [
      "const $TM_FILENAME_BASE = () => {",
      "  return <></>;",
      "}",
      "",
      "export default $TM_FILENAME_BASE;"
    ],
    "description": "declare a react component"
  },
}
  • 코드를 작성할 때 다른 변수와 헷갈리지 않도록 prefix에 $ prefix를 사용합니다.
  • 스니펫 변수 중 하나인TM_FILENAME_BASE를 사용해 항상 컴포넌트 이름이 파일명과 일치하도록 합니다.

보통 컴포넌트를 선언하면 Props 인터페이스도 선언해야 하니, component with props 스니펫도 추가해 보겠습니다.

{
  "component with props": {
    "prefix": "$component-with-props",
    "body": [
      "export interface ${TM_FILENAME_BASE}Props {",
      "  $1",
      "}",
      "",
      "const $TM_FILENAME_BASE = ({}: ${TM_FILENAME_BASE}Props) => {",
      "  return <></>;",
      "}",
      "",
      "export default $TM_FILENAME_BASE;"
    ],
    "description": "declare a react component with props interface"
  }
}
  • Tabstops 문법을 이용해서 스니펫을 불러왔을 때 Props 내부에 커서를 이동하도록 합니다.

작성을 완료한 뒤 파일을 저장하면 바로 스니펫을 사용할 수 있습니다.

3. 스니펫 사용하기

.tsx 파일에서 앞서 작성한 스니펫의 prefix를 입력하여 body를 불러올 수 있습니다. $ prefix를 사용했기 때문에 인텔리센스 자동완성에서 내가 작성한 스니펫만 볼 수 있습니다.


component 스니펫과 component with props 스니펫은 각각 다음과 같은 코드를 자동완성합니다.

컴포넌트명이 확장자를 제외한 파일명 (TM_FILENAME_BASE)으로 작성되고, props 인터페이스도 마찬가지로 파일명이 prefix로 붙습니다. 그리고 component with props은 커서가 2번 라인에 자동으로 이동합니다.


profile
웹 프론트엔드 개발자

0개의 댓글