계속 cra쓰다가 너무 의존하면 안될 것 같아서 해봤는데 후 역시 첫시작은 항상 순조롭지 않지.
근데 그냥 다른것 보단 webpack사이트 보는게 젤 빠를듯
1.바벨 설정
module.exports = {
presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
};
타스를 쓰지 않는 리액트 +웹팩 설정만 봐서 그런지 앞에 두개만 깔고 presents에 넣었는데 '@babel/preset-typescript' 필요
2.tsconfig 설정
tsconfig설정은 인터넷에 나와있는거보다 웹팩 홈페이지에 나와있는 설정이 최고다. 당연히 웹팩 설정도 그러하다!!!1
https://webpack.kr/guides/typescript/#basic-setup
TypeScript | 웹팩
웹팩은 모듈 번들러입니다. 주요 목적은 브라우저에서 사용할 수 있도록 JavaScript 파일을 번들로 묶는 것이지만, 리소스나 애셋을 변환하고 번들링 또는 패키징할 수도 있습니다.
webpack.kr
3. 웹팩 설정!
하 웹팩 사이트 들어가기전에 사람들이 올린글을 주워모아서 만들었는데 되지않았다. ts-loader도 깔고 그랬는데, loader에 ts-loader와 babel-loader를 둘 다 넣었더니, 두번 컴파일 하지 말라 그래서 ts-loader만 넣었더니 또 jsx 문법이 읽히지 않는 오류가 발생했다.
공식 홈페이지에 나와있는 내용
이미 babel-loader를 사용하여 코드를 트랜스파일 하는 경우라면
@babel/preset-typescript를 사용하여 Babel이 추가 로더를 사용하는 대신 JavaScript와 TypeScript 파일을 모두 처리하도록 합니다. ts-loader와 달리, 기본 @babel/plugin-transform-typescript 플러그인은 어떠한 타입 검사도 수행하지 않습니다
또 `TypeScript emitted no output for` 이런 에러가 발생해서 얜또 뭐야 싶었는데 exclude: /node_modules/ 이걸 반드시 설정해줘야한다.
4.React is not defined
웹팩 공식문서와 스택오버플로우로 검색해보면서 겨우겨우 빌드에 성공을 했다. 하지만 화면은 텅 비어있고...콘솔창에 가보니 React is not defined라는 오류가 날 향해 인사하고있었다...
검색을 해보니, 아까 웹팩 모듈의 옵션의 presets 부분에서
'@babel/preset-react',
{
runtime: 'automatic',
},
이 값을 설정하면 된다고 하길래 해봤더니 안됐다. 아니 external에 분명 React:'react'를 이미 적어놨는데... 왜 안될까 하면서 무한 검색 하다가 새로운 방법을 발견했다.
plugins: [
new webpack.ProvidePlugin({
React: 'react',
'react-dom': 'ReactDOM',
}),
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: './public/index.html',
}),
],
https://webpack.kr/plugins/provide-plugin/
ProvidePlugin | 웹팩
웹팩은 모듈 번들러입니다. 주요 목적은 브라우저에서 사용할 수 있도록 JavaScript 파일을 번들로 묶는 것이지만, 리소스나 애셋을 변환하고 번들링 또는 패키징할 수도 있습니다.
webpack.kr
이걸 넣었더니 제대로 랜더링이 되는걸 확인할 수 있었다.
'Today I learned! > 오늘 하루 배운 것, 기억할 것' 카테고리의 다른 글
230201 (0) | 2023.02.02 |
---|---|
[React]컴포넌트 재사용성 높이기!(컴포넌트에 각각 다른 attribute 설정하기) (0) | 2023.01.27 |
spa 배포시 주소창에 pathname을 직접 입력했을 때 404 에러 (0) | 2022.12.13 |
221120 (0) | 2022.11.20 |
221119 (1) | 2022.11.19 |