mkdir webpack-setup
npm init -y
npm i react react-dom
npm i -D webpack webpack-cli
// -D: 개발용으로만 사용됨
const path = require('path');
module.exports = {
name: 'webpack-set',
mode: 'development',
entry: {main: './index.jsx'},
output: {
path: path.join(__dirname, 'dist'), // 현재위치 dist폴더에 생성
filename: 'app.js'
}
}
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx'
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.querySelector('root')
)
export default function App () {
return(
<div>hello</div>
);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="root"></div>
<script src="./dist/app.js"></script>
</body>
</html>
package.json
"scripts": {
"dev": "webpack"
}
npm run dev
dist폴더 안에 app.js 파일은 정상적으로 생성 되었지만 아래와같이 App파일 타입(.jsx)을 이해할 수 없다고 에러가 뜬다.
npm i -D @babel/core @babel/preset-env @babel/preset-react babel-loader
- babel/core : 바벨의 기본적인 것들이 들어있음.
- babel/preset-env : 내 환경에 맞게 알아서 최신문법을 옛날문법으로 바꿔줌
- babel/preset-react : jsx지원
- babel-loader : 바벨과 웹팩을 연결
module: {
rules: [
{
test: /(\.jsx)$/,
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react']
}
}
]
}
다시 npm run dev