강의 유튜브 주소 :
https://www.youtube.com/watch?v=V3QsSrldHqI&list=PLcqDmjxt30RtqbStQqk-eYMK8N-1SYIFn
필요한 패키지 install 후에 webpack 설정해보기
프로젝트 폴더에서 npm 설정
// cmd
npm init
필요한 모듈을 받아준다.
react, react-dom, webpack, webpack-cli
@babel/core, @babel/preset-env, @babel/preset-react, @babel/plugin-proposal-properties, babel-loader
npm install --save-dev webpack webpack-cli
npm install --save-dev @babel/core @babel/preset-env @babel/preset-react babel-loader @babel/plugin-proposal-class-properties
dev와 아닌것을 구분하여 다운로드 받자.
dev는 개발환경에서 사용할 모듈들이며 package.json의 devDependencies에 저장된다.
webpack 설정파일을 프로젝트 루트에 생성한다.
아래 내용을 입력한다.
const path = require('path');
// node의 내장모듈, 경로를 문자열로 만들어주는 모듈이라고한다.
module.exports = {
// name은 webpack.config.js 파일에 대한 이름
name : 'gugudan',
// 개발상태라 development로 작성했지만, 배포시에는 production으로 변경해야한다.
mode : 'development',
// 소스맵 생성여부를 결정하는 옵션이라고 하는데, 추후에 한번봐야할것같다.
// 참고 : https://webpack.js.org/configuration/devtool/
devtool : 'eval',
// 웹팩이 경로나 확장자를 처리할 수 있게 옵션 설정하는 부분
resolve : {
// js나 jsx 확장자를 붙이지 않아도 자동으로 웹팩이 처리
extensions : ['.js', '.jsx']
},
// 모듈의 진입점을 설정
entry : {
app : ['./app', './Gugudan']
},
// 진입점의 파일들을 output으로 만들때 설정
module : {
rules : [{
// .js나 .jsx에 대한 파일들을 (정규표현식)
test : /\.jsx/,
// 바벨로더로
loader : 'babel-loader',
options : {
// 사용할 presets들
// preset-env는 옛날브라우저 지원하며 바벨과함께 사용되어야하는 플러그인들을 모아둔 모듈
// typescript가 필요하면 @babel/preset-typescript 가 필요하듯
// 플러그인들의 모음들이라서 수십개의 플러그인들이 합쳐져있다.
presets : [
'@babel/preset-env',
'@babel/preset-react'
],
// 클래스의 프로퍼티를 사용할 수 있게 도와주는 바벨 플러그인으로 이게 없으면 state에서 오류가 났다.
plugins : ['@babel/plugin-proposal-class-properties']
}
}]
},
// 추가적으로 플러그인을 사용할 경우
// loaderOptionsPlugin 플러그인은loader에 모든 곳에 debug 옵션을 넣어주는 플러그인
plugins : [
new webpack.LoaderOptionsPlugin({
debug: true
}),
],
// 출력
output : {
// 상단에서 선언한 path(경로)를 __dirnamae과 join하여 프로젝트 폴더(root)에 'dist'폴더를 생성
// dist 가 있으면 그 폴더 안에 파일을 만든다.
path : path.join(__dirname, 'dist'),
// 출력되는 파일 이름
filename : 'app.js'
}
};
위의 preset에 옵션을 넣을 수 있는데, 예제를 보자
// 옵션 사용 전
presets : ['@babel/preset-env', '@babel/preset-react']
// 옵션 추가
// 첫번째 값에 preset 모듈 이름
['@babel/preset-env',
// 그리고 옵션 값 추가
{
targets : {
// 브라우저 크로스브라우징할 범위를 선정하는 것인데
// 예를들어 ['> 5% in KR'] 과 같이 쓰면 한국에서 5%이상의 브라우저 점유율을 가진 브라우저를 지원한다는 뜻
// 이 옵션은 https://github.com/browserslist/browserslist 여기서 확인할 수 있다.
browsers : ['last 2 chrome versions'],
}
}]
'React' 카테고리의 다른 글
React 기초 학습 8.배열에 push할때 (Zerocho님 강의 학습 의식의 흐름대로 노트 정리) (0) | 2020.04.21 |
---|---|
React 기초 학습 7.자식 컴포넌트로 props 전달 / 주석 (Zerocho님 강의 학습 의식의 흐름대로 노트 정리) (0) | 2020.04.21 |
React 기초 학습 6.반복문에서 key (Zerocho님 강의 학습 의식의 흐름대로 노트 정리) (0) | 2020.04.21 |
React 기초 학습 5.클래스를 Hooks로 바꿔보자 (Zerocho님 강의 학습 후기) (0) | 2020.04.21 |
React 기초 학습 4.파일 수정 후 자동으로 빌드되게하자! (Zerocho님 강의 학습 의식의 흐름대로 노트 정리) (0) | 2020.04.21 |
React 기초 학습 3. 필요한 파일들에 대해 알아보자(Zerocho님 강의 학습 의식의 흐름대로 노트 정리) (0) | 2020.04.21 |
React 기초 학습 1. HTML에서 React를 사용해보자.(Zerocho님 강의 학습 의식의 흐름대로 노트 정리) (0) | 2020.04.10 |
ReactJS로 웹 서비스 만들기 학습 정리 (0) | 2018.08.12 |