공부기록/Typescript
React Typescript Webpack setup 해보기
Jenner
2023. 12. 19. 09:50
새로운 폴더에서
src, build 폴더 만들기
package.json
npm init 으로 package json파일 만들기
index.html
index.html파일 만들기
body에 id root를 가진 div태그 만들기
패키지 설치
npm install react react-dom // react패키지
npm install -D typscript @types/react @types/react-dom //typescript 패키지
tsconfig.json파일 만들고, 설정파일 입력
src에 App.tsx파일 만들고 내용 입력
index.tsx파일 만들고 내용입력 (엔트리 포인트가 될 파일)
추가 패키지 설치
리액트코드는 브라우저에서 이해하지 못함
✨babel✨은 react와 typescript코드를 javascript코드로 변환해 줄것임
npm install @babel/core @babel/preset-env @babel/preset-react @babel/preset-typescript
babel .babelrc파일 추가
{ "presets": [ "@babel/preset-env", ["@babel/preset-react", { "runtime": "automatic" }], "@babel/preset-typescript" ]}
webpack 디펜던시 설치
npm install webpack webpack-cli webpack-dev-server html-webpack-plugin
babel loader 패키지설치
babel과 webpack을 사용하여 javascript파일 트랜스파일링을 허용할 수 있게 함
npm i -D babel-loader
.ts 익스텐션을 이제 사용할 수 있지만
webpack 설정을 js로 놓을 것인데 type checking이 많이 필요하지 않은 파일들을 위해서다.
webpack.config.js파일
// webpack.config.js
const path = require("path");
module.exports = {
entry: path.resolve(__dirname, "..", "./src/index.tsx"), // 진입점(entry) 파일 경로
output: {
//웹팩 번들링 결과에 대한 옵션 기본경로는 dist
filename: "bundle.js", // 번들 파일 이름
path: path.resolve(__dirname, "dist"), // 번들 파일 저장 경로
},
resolve: {
//번들링할 확장자 설정
extensions: [".js", ".jsx", ".ts", ".tsx"],
},
module: {
//번들링 할 때 플러그인 설정 가능
rules: [
{
test: /\.(png|jpg|gif|jpeg)$/,
use: "file-loader", // 이미지 파일을 모듈로 처리하는 로더
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
// style-loader : style태그를 삽입해 dom에 css추가
// css-loader: css확장자의 css파일을 읽기 위한 로더
},
{
test: /\.(tsx|ts|jsx|js)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: [
"@babel/preset-env",
["@babel/preset-react", { runtime: "automatic" }],
],
},
},
},
},
],
},
mode: "development",
devServer: {
liveReload: false,
},
plugins: [
new HtmlWebpackPlugin({
template: path.resolve(__dirname, "..", "./src/index.html"),
}),
], //index.html파일에 bundle.js파일을 inject하는 플러그인
};
package.json파일에 start추가
"start": "webpack serve --config webpack/webpack.config.js --open"
그리고 npm start로 시작해보기