코드에서 상대경로 처리로 지저분해지는 걸 막기 위해 보통은 webpack resolve.alias나 babel의 babel-plugin-webpack-alias, babel-plugin-module-resolver등 다양한 플러그인들을 사용합니다.

저희 팀에서는 webpack의 resolve 옵션을 사용해보았는데요,

/* webpack.config.js */
entry: './client/index.js'
resolve: {
    alias: {
      "Components": path.resolve(__dirname, 'client/components'),
      "@": path.resolve(__dirname, 'client'),
    },
  },

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7962d0db-0f4c-4cb6-9a93-223793aa206f/Untitled.png

원래는 ../../Components/component 처럼 상대경로로 표현하면 헷갈리는 부분들을 위와 같이 변경할 수 있는데, 이렇게 하면 VSCode에서 IntelliSense기능이 제대로 작동하지 않아서 import하는 클래스/함수의 프로퍼티나 주석을 제대로 찾지 못해서 불편한 경우가 있습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/40aae4a1-3c50-467d-9d71-7cc5cd19ed16/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/745cb049-d7c5-42a4-90af-5e7d3939f55b/Untitled.png

위의 이미지를 보시면 열심히 jsdoc으로 주석으로 적어놨는데도 VSCode에서 Note에 대한 정보를 제대로 찾지 못해서 생성자에서 super()가 any 로만 표시되는 것을 확인하실 수 있습니다.

이럴 경우, 프로젝트 제일 상위 폴더에 jsconfig.json파일을 생성해서, VSCode가 경로를 제대로 찾을 수 있도록 설정 해 두는 것이 좋습니다. 타입스크립트를 사용하시는 경우, tsconfig.json에 밑의 옵션을 그대로 넣어주시면 됩니다.

/* jsconfig.json */
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "Components/*": ["./client/components/*"],
      "@/*": ["./client/*"],
    }
  }
}

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8ed2d873-9788-4228-ac12-edd648347ca9/Untitled.png

마우스를 super위로 옮길 시, jsdoc으로 남겨두었던 주석이 제대로 뜨는 것을 확인하실 수 있습니다!!