리액트 개발환경 세팅
초기 세팅 디렉토리 이동
명령을 치면 package.json이 생김
해당 디렉토리를 workspace로 만드는 작업임
workspace를 만들엇으니 필요한 패키지들을 설치해보자
웹팩 설치
module.exports = {
};
바벨 설치
프로젝트 구조 잡기
<html>
<head>
<meta charset="utf-8">
<title>끝말 잇기</title>
</head>
<body>
<div id="root"></div>
<script src="./dist/app.js"></script> <!--웹팩이 압축한 파일 로드-->
</body>
</html>
const React = require('react');
const ReactDom = require('react-dom');
const WordRelay = require('./WordRelay'); //불러올 컴포넌트
ReactDom.render(<WordRelay />, document.getElementById('root')); //렌더링
const React = require('react');
const ReactDom = require('react-dom');
class WordRelay extends React.Component {
state = {
text: 'Hello, Webpack',
};
render() {
return <h1>{this.state.text}</h1>;
}
}
module.exports = WordRelay;
이제 렌더링할 준비가 되었으니 웹팩을 이용하여 압축 후 출력해보자
const path = require('path');
module.exports = {
name : 'wordrelay-setting', //웹팩 이름
mode : 'development', //실서비스는 production
devtool : 'eval', //실서비스는 hidden-source-map
resolve : { //확장자를 생략하기 위한 설정
extensions : ['.js', '.jsx'] //여기에 확장자를 적어줌
},
module : { //압축시 적용할 모듈 설정
rules : [ //rules는 여러개의 규칙을 적용할 수 있다. 따라서 배열형태임
{
test: /\.jsx?/, //js와 jsx파일에
loader: 'babel-loader', //babel-loader을 적용
options: { //option은
presets: ['@babel/preset-env', '@babel/preset-react'],
plugins: ['@babel/plugin-proposal-class-properties'],
},
},
],
},
entry : {
app : ['./client'] //client.jsx에서 불러오는 모듈은 안적어줘도 자동으로 같이 패킹함
}, //입력 파일 설정
output : {
path : path.join(__dirname,'dist'), //현재디렉토리 + dist
filename : 'app.js'
}, //출력 파일 설정
};
이제 웹팩으로 압축을 해보자
위 명령어 실행시 압축된 파일 목록, 출력파일 등 메시지가 콘솔에 뜸
index.html을 서비스하여 결과를 확인해보자