프론트엔드

VSCode React styled-components 스니펫

seomoon 2021. 12. 29. 14:26

스니펫은 "코드 조각"이라는 뜻으로,
자주 사용되는 코드 형식을 미리 만들어두고 간편하게 불러와 사용할 수 있다.

 

지금 진행 중인 리액트 프로젝트에서는 각 컴포넌트 별로 .jsx 파일을 생성하고

동일한 이름으로 .styles.jsx 파일을 생성한 다음

.styles.jsx에 스타일드 컴포넌트를 import해 스타일을 정의하는 식으로 구조를 작성하고 있다.

/Testimonial
    Testimonial.jsx
    Testimonial.styles.jsx

 

내가 사용하는 기본적인 .styles.jsx 파일 형식은 다음과 같다.

Testimonial.styles.jsx

import styled from "styled-components";

const TestimonialStyled = styled.div``;

export default TestimonialStyled;

 

처음엔 그냥 VSCode 자동완성을 이용해서 일일히 손으로 치다가

컴포넌트 갯수가 많아지니까 안되겠어서

.styles.jsx 파일에서 사용할 커스텀 코드 스니펫을 만들었다.

 

VSCode 커스텀 코드 스니펫을 만드는 방법 :

1. 상단바에서 File > Preferences > User Snippets 클릭

2. 어떤 언어의 스니펫을 만들 것인지 선택 - jsx(React)는 javscriptreact를 선택한다.

3. 그러면 %userprofile%\AppData\Roaming\Code\User\snippets\javscriptreact.json 파일이 생성된다.

생성된 파일 안에는 이렇게 설명과 예제가 주석처리된 상태로 기본적으로 제공된다.

{
  // Place your snippets for javascriptreact here. Each snippet is defined under a snippet name and has a prefix, body and
  // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
  // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
  // same ids are connected.
  // Example:
  // "Print to console": {
  //     "prefix": "log",
  //     "body": [
  //         "console.log('$1');",
  //         "$2"
  //     ],
  //     "description": "Log output to console"
  // }
}

 

 

4. 예제를 참고해서 원하는 대로 스니펫을 작성하면 된다.

  • prefix : 스니펫을 불러올 키워드. jsx 파일에서 "rdst"를 입력하면 스니펫을 불러올 수 있도록 설정했다.
  • body : 스니펫 내용. 줄바꿈을 기준으로 배열로 나눠서 작성해야 한다. 한 줄을 하나의 문자열로 감싼다.
  • $0, $1 등을 이용해 커서 위치와 순서를 정할 수 있다. 탭을 이용해 정해둔 커서 위치로 순서대로 이동할 수 있다.
{  
  // Place your snippets for javascriptreact here. Each snippet is defined under a snippet name and has a prefix, body and  
  // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:  
  // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the  
  // same ids are connected.  
  // Example:  
  // "Print to console": {  
  //  "prefix": "log",  
  //  "body": \[  
  //  "console.log('$1');",  
  //  "$2"  
  //  \],  
  //  "description": "Log output to console"  
  // }  
  "create styles.jsx": {  
    "prefix": "rdst",  
    "body": \[  
      "import styled from \\"styled-components\\";",  
      "",  
      "const Name$1Styled = styled.div\`\`;",  
      "",  
      "export default Name$0Styled;"  
    \]  
  }  
}

 

이제 .jsx 파일에서 "rdst"를 입력하면 작성한 스니펫을 불러올 수 있다.