[JS] Babel로 별칭 경로 설정하기
이채현
프로젝트의 규모가 커지면 디렉토리 구조도 복잡해진다. 그 때문에 아래와 같이 컴포넌트의 위치를 찾기 어려워진다.
1 | import { whereIsThis } from "../../../../../aaa/bbb/ccc"; |
위와 같이 작성한 것을 상대경로
라고 한다. 상대 경로를 사용해서 모듈을 불러오면 모듈이 어느 경로에 위치하는지 파악하기가 난해해지는 경우가 생긴다. 뿐만 아니라, 이 자바스크립트 파일을 다른 디렉토리로 옮기려면 상대 경로를 그에 따라 모두 수정해줘야 해서 코드 리펙토링(refactoring)이 상당히 불편하다.
물론 절대경로
를 사용하면 되지 않을까 생각할 수 있지만, 개발자들마다 해당 프로젝트를 다른 디렉토리에 저장해놓을 것이기 때문에 현실적으로 적용하기 어려운 방법이다.
별칭 경로
위와 같은 문제는 자바스크립트 트랜스파일(transpile) 도구인 Babel(바벨)
을 사용하면 이 문제를 비교적 간단하게 해결할 수 있습니다.
Babel의 플러그인을 사용해서 별칭(alias) 경로를 설정해주면 된다.
1 | $ yarn add -D babel-plugin-module-resolver |
Babel의 module resolver 플러그인을 개발 의존성으로 설치 후, .babelrc
설정 파일을 열고, plugins
항목에 module-resolver
설정을 추가해준다.
1 | presets: ['@babel/preset-env', ...], |
alias 부분에서 ./src/api
를 #api
로 표기함에 따라
1 | import { alias } from "./src/api/.../alias"; |
마치면서
이상으로 Babel의 module resolver 플러그인을 이용한 별칭 경로 설정 방법이였습니다.
만약 본인이 Webpack 설정과 겹쳐 고민이 있다면 다음 글[JS] babelrc와 webpack.config을 참고해주세요.
[JS] Babel로 별칭 경로 설정하기