Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 세부
- 유효성검사
- ES6
- REACT
- 정직하게사세요
- webpack.config.js
- 중고거래사기
- 자동완성
- 삼성무선청소기제트
- 정규식
- JavaScript
- autocomplate
- 구분
- 사기
- 맛사지
- Hooks
- 스쿠버다이빙
- 여행
- 마사지
- 스노쿨링
- js
- Webpack
- 중고나라사기
- 네이버페이사기
- 해외여행
- 특수문자
- 중고나라
- plugin
- 막탄
Archives
- Today
- Total
Ryu.log
[ Webpack ] Webapck 설정값 정리 본문
webpack 설정 파일 정리
React
를 사용하려고 웹팩을 쓰려하면 핵심 파일인webapck.config.js
파일의 설정값이.. 작성하려 할때마다 까먹는다..
자꾸 까먹다보니 자꾸 다시 검색을 하게되고... 악순환 그래서 각 속성들의 역할들을 정리 해놓는다.
package.json
먼저 package.json
파일에 어떤 디펜더시가 들어가는지 확인해본다.
// packaage.json file
{
"name": "Webpack Setting",
"version": "1.0.0",
"description": "Webpack Setting",
"main": "index.js",
"scripts": {
"dev": "webpack"
},
"author": "Junho Ryu",
"license": "ISC",
"dependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
},
"devDependencies": {
"@babel/core": "^7.6.2",
"@babel/preset-env": "^7.6.2",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.6",
"webpack": "^4.40.2",
"webpack-cli": "^3.3.9"
}
}
scripts
"scripts": {
"dev": "webpack"
},
터미널에서 npm run dev
및 npx webpack
을 사용하면 webpack
동작을 실행한다.
dependencies
react
이건뭐.. react의 core 코드가 담긴 패키지다.react-dom
이것도 따로 써놓을 필요 없이 그냥 react-dom의 core 코드가 담긴 패키지다.react
, react-dom
이 두개는 react를 사용하기위한 필수 패키지임
devDependencies
@babel/core
babel의 기본적인 동작 코드가 들어가있음@babel/preset-env
알아서 해당 브라우저가 이해할수 있도록 최신문법을 옛날문법으로 변환해준다.@babel/preset-react
babel이 jsx문법을 읽을수 있도록 해준다.@babel/plugin-proposal-class-properties
jsx내에서도 class안에 state와 같이 여러 문법이 존재한다 이를 호환하기위해 설치babel-loader
babel과 webpack을 연결해준다.
webpack.config.js
const path = require('path');
module.exports = {
name: 'Webpack Setting',
mode: 'development',
devtool: 'eval',
resolve: {
extensions: ['.js', '.jsx']
},
entry: {
app: ['./index'],
},
module: {
rules: [
{
test: /\.jsx?/,
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react'],
plugins: []
}
},
],
},
output: {
path: path.join(__dirname, 'dist'),
filename: 'app.js'
},
}
const path = require('path');
node
에서 경로를 쉽게 조작 할 수 있도록 해준다. node가 설치되어 있다면, 자동으로 설치 되어있다.
module.exports = {
name: 'Webpack Setting', // 이름
mode: 'development', // 빌드 모드 -> 실서비스 : production
devtool: 'eval', // 빌드 속도 빠르게 한다는 것 정도로 인식..
resolve: {
extensions: ['.js', '.jsx'] // entry 속성에 지정된 파일 확장자를 지정해준다.
},
...
}
module.exports = {
...
entry: { // 입력 -> 어떤 파일로부터 webpack이 빌드를 시작할지 entry point를 지정하는 옵션
app: ['./index'], // 시작 파일명, 배열로 여러개의 entry point를 지정할 수 있다.
},
...
}
module.exports = {
...
module: {
rules: [ // 룰 적용 배열로 작성되어 여러개의 룰을 적용시켜 줄 수 있다.
{
test: /\.jsx?/, // 룰을 적용 시킬 파일을 지정, 해당 정규식은 `js`,`jsx` 파일에 대해 적용 시키겠다는 정규식이다.
loader: 'babel-loader', // 최신문법을 이해하지 못하는 브라우저를 위해 바벨을 적용시켜 이전 문법으로 변환
options: {
presets: ['@babel/preset-env', '@babel/preset-react'],
//presets 옵션들을 넣어준다. 해당 패키지의 역할은 상단에 적어놓음
plugins: []
// babel관련 사용해야할 plugin이 존재한다면 넣어준다.
// presets, plugins 속성들은 아래와같이 배열안에 또다시 배열을 넣어 상세 옵션 설정들이 가능하다.
// ex) presets: [ ['@babel/preset-env', { targets: { browsers : [...] } }] ]
}
},
],
},
...
}
module.exports = {
...
output: { // 출력
path: path.join(__dirname, 'dist'),
// path.join() 함수를 실행하면 경로를 알아서 만들어준다,
// 현재 폴더의 실제경로는 C:\Users\유준호\Desktop\test\webpackSetting ... 이런 식으로 구성되어잇는데,
// 이는 컴퓨터마다 환경도다르고 경로가 다를 수 있기 때문에 path.join() 함수를 사용하여,
// 현재 webpack.confing.js 폴더 경로에 있는 dist폴더에 output을 내보낸다.
filename: 'app.js' // 원하는 파일 name
},
...
}
'Front-end > Webpack' 카테고리의 다른 글
[ Webpack ] Proxy 설정으로 CORS 도메인 문제 해결 (14) | 2019.07.25 |
---|
Comments