티스토리 뷰
Project Structure
monorepo의 hoist관련 이슈: The react-scripts package provided by Create React App requires a dependency
심재철 2020. 6. 5. 22:13
프로젝트 구조
현재 프로젝트는 yanr workspace와 lerna를 활용한 모노레포로 구성되어 있다. 각 패키지에서는 웹팩을 사용하고 있는데 문제는 yarn install로 패키지를 설치할때 yarn workspace가 자동으로 각 패키지간 중복된 모듈들을 루트에 딱 한번만 설치해주는 hoist기능을 해준다는것이다.
multiwrite라는 패키지를 webpack-dev-server로 오픈하려고 할때 위와 같은 오류가 발생했다.
원인은 multiwrite 패키지는 cra로 생성된 프로젝트라 웹팩 4.42.0버전을 요구하고 있는데 프로젝트 루트에 설치된 웹팩의 버전이 4.43.0이기 때문에 오류가 발생할 가능성이 있어서 이렇게 길고 긴 에러 메세지를 뱉어주고 있는것이다.
세 패키지의 웹팩 버전을 ^4.43.0으로 명시하는게 아니라 4.42.0으로 통일시키면 웹팩 4.42.0버전이 루트로 hoist되면서 오류가 사라진다. 하지만 이렇게 되면 최신 버전의 웹팩을 설치 할 수가 없다.
그래서 대신 루트의 package.json에 다음과 같이 명시하였다.
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"**/webpack",
"**/webpack/*"
]
},
webpack을 hoist하지 않겠다고 명시하면 웹팩은 레포지토리 루트에 딱 한번만 설치되는게 아니라 각 패키지에 중복으로 설치된다. 덕분에 레포지토리 루트에는 웹팩이 설치되지 않으므로 워닝이 사라진다.
.env에 SKIP_PREFLIGHT_CHECK=true로 명시해서 해결하는 방법은 잠재적인 버그를 발생시킬 가능성을 증가시키므로 지양하는게 좋을것같다.
'Project Structure' 카테고리의 다른 글
atomic design 파헤치기 (3) | 2020.04.16 |
---|---|
storybook and atomic design (0) | 2020.03.23 |
yarn workspace와 Lerna.js로 모노레포 만들기 (0) | 2020.03.16 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- javascript
- hydrate
- atomic design
- promise
- design system
- reactdom
- Action
- Polyfill
- computed
- reflow
- server side rendering
- async
- rendering scope
- await
- react hooks
- useRef
- useEffect
- props
- Babel
- react
- reducer
- typescript
- storybook
- type alias
- Next.js
- es6
- webpack
- state
- mobx
- return type
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함