SlideShare a Scribd company logo
WEBPACK / BABEL
2021.01.25
작성자 : 배창현
목차
 Webpack
 Babel
WEBPACK
 Webpack 이란?
Webpack 은 최신 javascript 응용 프로그램을 위한 정적 모듈 번들러(module bundler)
* module 이란 프로그램을 구성하는 일부요소 또는 기능별로 나뉘어지는 프로그램
* bundler 는 지정한 단위로 파일들을 하나로 만들어 주는 역할을 수행
WEBPACK
Bundle your scripts, images ..
의존 관계에 있는 모듈들을 하나의
파일(자바스크립트 파일)로 번들링
 Webpack 을 사용하는 이유?
다수의 자바스크립트 파일을 하나의 파일로 번들링하므로 html 파일에서 script 태그로 다수의 자바스크립트 파일
을 로드해야하는 번거로움이 사라짐(HTTP 요청 횟수 감소)
-> overhead 감소
웹팩은 플러그인(plugin) 및 로더(loader) 등과 함께 사용하면 이미지, 글꼴, SASS, CSS 와 같은 종속성 및 자산을 관
리하는데 훌륭한 개발경험을 제공합니다.(tree shaking 및 code splitting 등 지원)
* tree shaking 이란 데드코드(dead code) 를 제거하는 것을 의미(사용하지 않는 일부 코드를 제거 -> 번들링 크기와 로드 시간이 줄
어듬)
* code splitting 이란 코드를 다양한 번들로 나누며, 해당 번들은 필요할 때 동적으로 로드괴거나 병렬로 로드가 가능 -> 로드 시간
개선
WEBPACK
WEBPACK 설치
웹팩은 각 프로젝트 또는 전역으로 설치가 가능
npm i -g webpack webpack-cli
npm i –D webpack webpack-cli
 Webpack 구성 및 핵심 개념
- Entry
- Output
- Loaders
- Plugins
- Mode
- Browser Compatibility
* 웹팩을 사용할 때 반드시 설정파일이 필요하지는 않지만, 대부분의 경우에는 설정파일을 사용
* 설정파일은 디폴트로 webpack.config.js 를 바라본다.(경로는 프로젝트 루트 폴더)
WEBPACK
// webpack.config.js
const path = require('path’);
module.exports = {
entry: './src/index.js’,
output: {
filename: 'bundle.js’,
path: path.resolve(__dirname, 'dist’),
},
};
 Webpack 구성 및 핵심 개념
- Entry : 파일을 읽어들이기 위한 시작점, 번들링 시작점, 의존성 그래프의 시작점
- Output : 번들링 결과물 경로 및 파일명 설정
- Loaders : 웹팩은 오직 자바스크립트, JSON 만 해석이 가능하기 때문에 CSS, 이미지, 폰트 등을 웹팩이 해석 할 수
있는 자바스크리틉로 변경해야 합니다. loader 는 이러한 역할을 수행
- Plugins : 웹팩의 기본적인 동작에 추가적인 기능을 제공(번들링한 결과물에 추가적인 작업을 제공)
- Mode : 웹팩4 에서 추가된 옵션이며, production / development / none 3가지가 존재하며 각 옵션마다 최적화 옵
션을 자동으로 설정
- Browser Compatibility : 웹팩은 ES5를 준수하는 모든 브라우저를 지원(IE8 이하 미지원) -> 이전 브라우저를 지원
하려면 polyfill 을 해야함
WEBPACK
 Webpack 구성 및 핵심 개념
WEBPACK
const CleanWebpackPlugin = require("clean-webpack-plugin")
module.exports = {
entry: "./script.js",
output: {
path: __dirname,
filename: "build.js",
},
module: {
rules: [
{
test: /.css$/,
use: ["style-loader", "css-loader"],
},
],
},
plugins: [new CleanWebpackPlugin("build.js")],
}
"scripts": {
"build": "webpack"
"watch": "webpack --watch"
}
npm run build
웹팩 실행(package.json)
참조 : https://flaviocopes.com/webpack/
웹팩은 개발 편의기능을 제공해주고 있다.
--watch
webpack dev server -> 웹팩에서 제공하는
개발서버를 사용하면 live reloading 통해,
개발속도 및 반영되는 부분을 바로 확인이 가능
source map -> 웹팩은 코드를 번들로 제공하므로,
오류를 발생시킨 원본 파일에 대한 참조가 필요
 Webpack5
- 웹팩5 는 최소 Node.js 10.13.0 이 필요
- tree shaking 개선(번들 크기 개선)
- 영구 캐싱으로 빠른 빌드
- 장기 캐싱으로 로딩 시간 단축
WEBPACK
BABEL
 Babel 이란?
Babel 은 최신 javascript 문법(ES6+ 이상)을 이전 javascript 문법으로 변환해주는 컴파일러 또는 트랜스파일러다.
굳이 최신문법을 왜?
크로스 브라우징이라는 개념을 알면 바벨은 정말 좋은 도구임을 알게 된다.
브라우저 및 플랫폼마다 모든 javascript 문법이 잘 동작하면 문제가 없다. 하지만 모든 브라우저 및 플랫폼에서 동작
하지 않고 일부 최신버전에서만 동작하는 경우도 발생을 한다.
IE11 에서 동작해야할 자바스크립트 코드를 ES2015 로 작성한다면? 사실상 동작을 보장할수가 없다.
이런 측면에서 바벨은 최대한 모든 실행환경(브라우저, 플랫폼)에서 자바스크립트가 실행이 가능하도록 보장해준다.
바벨은 자바스크립트 관련 컴파일만 지원하기 때문에, 최신 브라우저에서 지원하는 BOM 구문은 다른방식으로
polyfill 해서 사용해야한다.(classList 같은것들..)
BABEL
 Babel 이란?
바벨은 3단계로 빌드를 진행
- 파싱(parsing)
- 변환(transforming)
- 출력(printing)
바벨은 파싱 / 출력을 담당하고 변환은 플러그인을 사용하여 진행한다.
-> @babel/core 자체는 해석을 못한다는 의미 -> presets / plugins 에게 변환을 위임
presets = plugins 을 모아둔 형식
BABEL
.babelrc
 Babel 구성과 설치
npm i –D @babel/core
npm i –D @babel/preset-env
npm i –D @babel/cli
프로젝트 루트 폴더에 .babelrc 설정파일 생성
만약에, 웹팩과 함께 사용할려면?
npm i –D babel-loader
모듈 설치 후 webpack.config.js 에 loader 설정을 추가해 줘야한다.
BABEL
 Babel polyfill
폴리필(polyfill)?
브라우저에서 지원하지 않는 코드를 사용가능한 코드 조각이나 플러그인(추가기능)을 의미
바벨은 ES6+ 에서 지원하는 문법을 이전 버전 문법으로 변환해주지만, ES5 에 존재하지 않는 메서드들 및 속성은 자
동으로 추가해주지 않는다.
-> 이러한 부분을 해결하기 위해서 polyfill 을 사용(Map, Set, Promise 등을 사용가능한 객체로 생성해줌)
@babel/polyfill 모듈을 사용중단(deprecated) 되었으므로, 다른방식으로 사용하는게 좋다.
(해당 모듈을 가져오면 모든 모듈내의 모든 폴리필을 추가하면서 번들파일용량이 커진다)
core-js / regenerator-runtime 을 직접 사용하는 방식을 제안하고 있다.
@babel/preset-env 에서 useBuiltIns 옵션을 함께 사용하여 적용이 가능하다.
참고 : https://babeljs.io/docs/en/babel-preset-env
BABEL

More Related Content

PPTX
PPTX
javascript01
PDF
자바 서블릿과 세션 (Java Servlet, Session)
PDF
1.Startup JavaScript - 프로그래밍 기초
PDF
이클립스와 안드로이드
PPT
자바와 사용하기2
PPTX
Servlet Architecture
PPTX
Presentation1
javascript01
자바 서블릿과 세션 (Java Servlet, Session)
1.Startup JavaScript - 프로그래밍 기초
이클립스와 안드로이드
자바와 사용하기2
Servlet Architecture
Presentation1

What's hot (20)

PPT
Servlet3
PDF
Clojure/Chapter3
KEY
Mongodb tip42 50
PDF
JSP 프로그래밍 #02 서블릿과 JSP 시작하기
PDF
클래스의 추가 지식
PPTX
Ngui3 5 5 localization
PDF
Google coding guide
PPTX
Javascript 를 perl에서 mini-language 로 사용하기
PPTX
Promise 패턴 공부
PPTX
HeadFisrt Servlet&JSP Chapter 3
 
PDF
Jsp convert to Servlet
PDF
JSP 프로그래밍 #01 웹 프로그래밍
PPTX
Flux 예제 분석 2
PDF
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
PDF
JavaScript Promises
PDF
막하는스터디 두번째만남 Express(20151025)
PDF
20 handler and_async_task
PDF
연산자 오버로딩
PPTX
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
PPTX
세미나 Spring mybatis
Servlet3
Clojure/Chapter3
Mongodb tip42 50
JSP 프로그래밍 #02 서블릿과 JSP 시작하기
클래스의 추가 지식
Ngui3 5 5 localization
Google coding guide
Javascript 를 perl에서 mini-language 로 사용하기
Promise 패턴 공부
HeadFisrt Servlet&JSP Chapter 3
 
Jsp convert to Servlet
JSP 프로그래밍 #01 웹 프로그래밍
Flux 예제 분석 2
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
JavaScript Promises
막하는스터디 두번째만남 Express(20151025)
20 handler and_async_task
연산자 오버로딩
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
세미나 Spring mybatis
Ad

Similar to Webpack&babel (20)

PPTX
Spring Boot + React + Gradle in VSCode
PDF
2017. 프론트엔드 트랜드
PDF
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
PDF
Front end dev 2016 & beyond
PPTX
Bootstrap에 대해서 정기철
PDF
LucideWorks Banana 소개
PDF
Backend Master | 3.1.1 Build - JS build tools
PPTX
모듈시스템과 webpack
PPTX
Single-page Application
PDF
최근 Javascript framework 조사
PPTX
Web assembly 맛보기
PDF
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
PDF
[오픈소스컨설팅]Spring 3.1 Core
PPTX
웹캣소개서 (스마트교육연구소)
PDF
Unionweb프로젝트
PDF
Es6 module
PPTX
요즘웹개발
PDF
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
PPTX
Springmvc
PDF
[IoT] MAKE with Open H/W + Node.JS - 3rd
Spring Boot + React + Gradle in VSCode
2017. 프론트엔드 트랜드
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
Front end dev 2016 & beyond
Bootstrap에 대해서 정기철
LucideWorks Banana 소개
Backend Master | 3.1.1 Build - JS build tools
모듈시스템과 webpack
Single-page Application
최근 Javascript framework 조사
Web assembly 맛보기
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[오픈소스컨설팅]Spring 3.1 Core
웹캣소개서 (스마트교육연구소)
Unionweb프로젝트
Es6 module
요즘웹개발
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
Springmvc
[IoT] MAKE with Open H/W + Node.JS - 3rd
Ad

More from ChangHyeon Bae (14)

PPT
호이스팅, 클로저, IIFE
PPTX
PPTX
javascript03
PPTX
javascript02
PPTX
Java memory
PPTX
JavaScript 실행컨텍스트와 클로저
PPTX
WAS와 웹서버 간단 정리
PPTX
REST Concept
PPTX
Srping data rest
PPTX
Angular 살짝 해보고 발표.
PPTX
OOP - Object Oriendted Programing
PPTX
TDD - Test Driven Development
PPTX
DI - Dependency Injection
PPTX
CDN - Content Delivery Network
호이스팅, 클로저, IIFE
javascript03
javascript02
Java memory
JavaScript 실행컨텍스트와 클로저
WAS와 웹서버 간단 정리
REST Concept
Srping data rest
Angular 살짝 해보고 발표.
OOP - Object Oriendted Programing
TDD - Test Driven Development
DI - Dependency Injection
CDN - Content Delivery Network

Webpack&babel

  • 4.  Webpack 이란? Webpack 은 최신 javascript 응용 프로그램을 위한 정적 모듈 번들러(module bundler) * module 이란 프로그램을 구성하는 일부요소 또는 기능별로 나뉘어지는 프로그램 * bundler 는 지정한 단위로 파일들을 하나로 만들어 주는 역할을 수행 WEBPACK Bundle your scripts, images .. 의존 관계에 있는 모듈들을 하나의 파일(자바스크립트 파일)로 번들링
  • 5.  Webpack 을 사용하는 이유? 다수의 자바스크립트 파일을 하나의 파일로 번들링하므로 html 파일에서 script 태그로 다수의 자바스크립트 파일 을 로드해야하는 번거로움이 사라짐(HTTP 요청 횟수 감소) -> overhead 감소 웹팩은 플러그인(plugin) 및 로더(loader) 등과 함께 사용하면 이미지, 글꼴, SASS, CSS 와 같은 종속성 및 자산을 관 리하는데 훌륭한 개발경험을 제공합니다.(tree shaking 및 code splitting 등 지원) * tree shaking 이란 데드코드(dead code) 를 제거하는 것을 의미(사용하지 않는 일부 코드를 제거 -> 번들링 크기와 로드 시간이 줄 어듬) * code splitting 이란 코드를 다양한 번들로 나누며, 해당 번들은 필요할 때 동적으로 로드괴거나 병렬로 로드가 가능 -> 로드 시간 개선 WEBPACK
  • 6. WEBPACK 설치 웹팩은 각 프로젝트 또는 전역으로 설치가 가능 npm i -g webpack webpack-cli npm i –D webpack webpack-cli
  • 7.  Webpack 구성 및 핵심 개념 - Entry - Output - Loaders - Plugins - Mode - Browser Compatibility * 웹팩을 사용할 때 반드시 설정파일이 필요하지는 않지만, 대부분의 경우에는 설정파일을 사용 * 설정파일은 디폴트로 webpack.config.js 를 바라본다.(경로는 프로젝트 루트 폴더) WEBPACK // webpack.config.js const path = require('path’); module.exports = { entry: './src/index.js’, output: { filename: 'bundle.js’, path: path.resolve(__dirname, 'dist’), }, };
  • 8.  Webpack 구성 및 핵심 개념 - Entry : 파일을 읽어들이기 위한 시작점, 번들링 시작점, 의존성 그래프의 시작점 - Output : 번들링 결과물 경로 및 파일명 설정 - Loaders : 웹팩은 오직 자바스크립트, JSON 만 해석이 가능하기 때문에 CSS, 이미지, 폰트 등을 웹팩이 해석 할 수 있는 자바스크리틉로 변경해야 합니다. loader 는 이러한 역할을 수행 - Plugins : 웹팩의 기본적인 동작에 추가적인 기능을 제공(번들링한 결과물에 추가적인 작업을 제공) - Mode : 웹팩4 에서 추가된 옵션이며, production / development / none 3가지가 존재하며 각 옵션마다 최적화 옵 션을 자동으로 설정 - Browser Compatibility : 웹팩은 ES5를 준수하는 모든 브라우저를 지원(IE8 이하 미지원) -> 이전 브라우저를 지원 하려면 polyfill 을 해야함 WEBPACK
  • 9.  Webpack 구성 및 핵심 개념 WEBPACK const CleanWebpackPlugin = require("clean-webpack-plugin") module.exports = { entry: "./script.js", output: { path: __dirname, filename: "build.js", }, module: { rules: [ { test: /.css$/, use: ["style-loader", "css-loader"], }, ], }, plugins: [new CleanWebpackPlugin("build.js")], } "scripts": { "build": "webpack" "watch": "webpack --watch" } npm run build 웹팩 실행(package.json) 참조 : https://flaviocopes.com/webpack/ 웹팩은 개발 편의기능을 제공해주고 있다. --watch webpack dev server -> 웹팩에서 제공하는 개발서버를 사용하면 live reloading 통해, 개발속도 및 반영되는 부분을 바로 확인이 가능 source map -> 웹팩은 코드를 번들로 제공하므로, 오류를 발생시킨 원본 파일에 대한 참조가 필요
  • 10.  Webpack5 - 웹팩5 는 최소 Node.js 10.13.0 이 필요 - tree shaking 개선(번들 크기 개선) - 영구 캐싱으로 빠른 빌드 - 장기 캐싱으로 로딩 시간 단축 WEBPACK
  • 11. BABEL
  • 12.  Babel 이란? Babel 은 최신 javascript 문법(ES6+ 이상)을 이전 javascript 문법으로 변환해주는 컴파일러 또는 트랜스파일러다. 굳이 최신문법을 왜? 크로스 브라우징이라는 개념을 알면 바벨은 정말 좋은 도구임을 알게 된다. 브라우저 및 플랫폼마다 모든 javascript 문법이 잘 동작하면 문제가 없다. 하지만 모든 브라우저 및 플랫폼에서 동작 하지 않고 일부 최신버전에서만 동작하는 경우도 발생을 한다. IE11 에서 동작해야할 자바스크립트 코드를 ES2015 로 작성한다면? 사실상 동작을 보장할수가 없다. 이런 측면에서 바벨은 최대한 모든 실행환경(브라우저, 플랫폼)에서 자바스크립트가 실행이 가능하도록 보장해준다. 바벨은 자바스크립트 관련 컴파일만 지원하기 때문에, 최신 브라우저에서 지원하는 BOM 구문은 다른방식으로 polyfill 해서 사용해야한다.(classList 같은것들..) BABEL
  • 13.  Babel 이란? 바벨은 3단계로 빌드를 진행 - 파싱(parsing) - 변환(transforming) - 출력(printing) 바벨은 파싱 / 출력을 담당하고 변환은 플러그인을 사용하여 진행한다. -> @babel/core 자체는 해석을 못한다는 의미 -> presets / plugins 에게 변환을 위임 presets = plugins 을 모아둔 형식 BABEL .babelrc
  • 14.  Babel 구성과 설치 npm i –D @babel/core npm i –D @babel/preset-env npm i –D @babel/cli 프로젝트 루트 폴더에 .babelrc 설정파일 생성 만약에, 웹팩과 함께 사용할려면? npm i –D babel-loader 모듈 설치 후 webpack.config.js 에 loader 설정을 추가해 줘야한다. BABEL
  • 15.  Babel polyfill 폴리필(polyfill)? 브라우저에서 지원하지 않는 코드를 사용가능한 코드 조각이나 플러그인(추가기능)을 의미 바벨은 ES6+ 에서 지원하는 문법을 이전 버전 문법으로 변환해주지만, ES5 에 존재하지 않는 메서드들 및 속성은 자 동으로 추가해주지 않는다. -> 이러한 부분을 해결하기 위해서 polyfill 을 사용(Map, Set, Promise 등을 사용가능한 객체로 생성해줌) @babel/polyfill 모듈을 사용중단(deprecated) 되었으므로, 다른방식으로 사용하는게 좋다. (해당 모듈을 가져오면 모든 모듈내의 모든 폴리필을 추가하면서 번들파일용량이 커진다) core-js / regenerator-runtime 을 직접 사용하는 방식을 제안하고 있다. @babel/preset-env 에서 useBuiltIns 옵션을 함께 사용하여 적용이 가능하다. 참고 : https://babeljs.io/docs/en/babel-preset-env BABEL