babel-in-monorepo
with jest
node_modules
를 트랜스파일 하기 위해 babel.config.js 를 사용하려면 다음 문서를 보자.
babel은 자동으로 root 디렉토리 babel.config.js
찾음
혹은 명시적인
configFile
값을 사용할 수 있음, default config file search 행동을 오버라이드 하기 위해
file-relative 설정
바벨은 디렉토리 구조를 검색하여 .babelrc
를 로드 함
file-relative 설정은 최상단 config value와 머지됨.
특정 오버라이드를 하게 될 경우 유용
근데 몇가지 단점 있음
package.json
이 포함된 디렉토리가 찾아지면 검색 멈춤그래서 relative config는 오직 single package에서만 적용됨.
Monorepos
모노레포에서, 핵심은 바벨은 working directory를 logical root
로 취급하는 것
만약 바벨이 전체 repo에 적용되는 경우, 특정 sub-package내에서 실행된다면 이것은 문제를 일으킬 수 있음
위와 별도로 .babelrc
를 사용할지, 중앙의 babel.config.js
만 사용할지 결정해야함
babelrc 파일은 babel6에서 하위폴더별 설정을 위해 필수가 아님 (babel7의 babel.config.js도 마찬가지)
Root babel.config.js files
모노레포에서 첫번째로 할 일은 루트에 babel.config.js
만드는 거
얘는 저장소의 base directory의 core concept을 정의
만약 특정 package를 구성하기 위해
.babelrc
를 사용한다면, repo-level option을 설정해줘야하는게 중요repo 구성을 root
babel.config.js
로 지정할 수 있음override
로, 저장소의 subfoler에 적용할 수 있음이것은 레포에 수많은
.babelrc
만드는것보다 더 쉬움
첫번째 이슈
바벨은
babel.config.js
를root
로 설정된 dir에서 로드하려고 함이것은 만약 너가 babel.config.js 파일을 만들었다면
summary
사내 npm 모듈화 작업 중에 바벨 설정을 루트에 두고, 특정 패키지에 필요한 설정이 있을 경우 오버라이드 하는게 있나 해서 찾아봤는데 친절하게 설명되있었다.
여튼 바벨을 프로젝트 폴더 루트에 있는 것을 바라보고, 특정 패키지에서 오버라이드 가능하다.
Last updated
Was this helpful?