320x100
320x100

패키징

: 개발이 완료된 소프트웨어를 배포하기 위해 하나의 실행 파일로 만드는 것

 

- 참조

: https://2mukee.tistory.com/620

 

 

 

번들링 (q

: 자바스크립트에서 나온 개념으로, 패키징을 의미

: JS에는 빌드라는 개념이 없기 때문에 컴파일을 수행하는 빌드 타임을 가짐

: 이때 컴파일 후 소프트웨어를 하나의 js 파일로 만드는 번들링을 거쳐 하나의 실행파일로 만듦

: 이때 하나의 실행파일로 만드는 것을 빌드 라고함

 

- 번들링 도구

: Browserify

: RequireJS

: Rollup

: Parcel

: gulp

: Webpack

 

 

 

 

 

Browserify

: CommonJS 기반의 번들링 라이브러리

: Webpack 등장 전 까지 많이 쓰임

 

 

 

 

RequireJS

: AMD (Asyncronous Module Definition) 기반의 번들링 라이브러리

: 스크립트 로더 방식으로, 실행 시간에 스크립트를 로드해서 모듈을 불러오는 방식

 

- 스크립트 로더

: 모듈을 10개 불러온다면 스크립트 태그 10개를 추가하고 http 요청을 통해 모듈을 불러오는 방식

 

 

 

 

 

Rollup

: ES6 기반의 번들링 라이브러리로, es 모듈 형태로 빌드 가능

: webpack과 달리 코드들을 동일한 수준으로 호이스팅 한 후 한 번에 번들링을 진행하기 때문에 webpack 보다 빠르고 결과물이 훨씬 가벼움

: 라이브러리나 패키지를 작업하는데 활용 가능

: code spliting이나 static asset이 많은 경우, 안정성이 중요하거나 CommonJS 종속성이 많은 경우에는 부적합

 

- 호이스팅

: 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것

: let으로 변수를 선언하면 호이스팅 시 undefined로 변수를 초기화함

 

 

 

 

Parcel

: 2017년에 등장한 웹 애플리케이션 번들러

: Webpack이나 Gulp와 달리 별도 설정 없이 빠른 빌드 가능

: 별도 설정 없이 엔트리 파일만 설정하면 바로 빌드 가능

: Assets 기반의 번들링을 지원하며, babel 및 postCSS 같은 트랜스파일러들을 내장하여 지원

: 런타임중 페이지 새로고침 없이도 모듈을 자동 업데이트 (HMR, Hot Moudle Replacement)

: NodeJS에서도 사용 가능하며 typescript도 지원

 

 

 

 

Gulp

: ES6 기반의 Streaming Build System

: Node의 스트림 기능을 이용하여 런타임 중 변경된 파일 내용에 대해서만 빌드가 가능한 번들러

: watch를 설정하여 해당 디렉터리 및 파일들이 변경되면 지정한 task를 실행할 수 있음

 

 

 

 

 

Webpack

: NodeJS를 위한 번들러로 TypeScript에서 JavaScript로의 트랜스 파일링 및 디버깅을 위한 source map 파일 생성 등을 지원

: 의존 모듈과 HTML, CSS 자바스크립트 번들링 지원

: AoT 컴파일 및 코드 문법 체크와 코드의 규약 준수 여부 체크 등을 지원

: 최근 가장 많이 쓰이는 번들러

 

- 장점

: 코드 축소 및 사용하지 않는 코드를 제거하는 tree shaking과 같은 최적화를 수행하여 성능 최적화

: 컴파일 과정에서 필요한 플러그인을 추가하고 번들러를 실행해줌

: Code splitting을 통해 원하는 떄에 모듈을 로딩할 수 있음

: Webpack5 부터 종속성 문제 해결도 가능

 

- 단점

: 복잡한 Configuration

: 빌드 속도 (Webpack5 부터 캐싱을 지원하여 속도가 개선됨)

: 번들 크기가 무거움

 

 

 

Reference

 

번들링(Bundling)이란?

번들링(Bundling) 프로그래밍을 하다보면 자주 마주치는 단어 중에 번들링이란 단어가 있습니다. 번들이라는 것은 묶는다는 뜻으로 뭔가를 묶는 작업이라는 걸 이름에서 유추할 수가 있죠. 그렇다

lihano.tistory.com

 

[ModuleBundler][Browserify]js를 하나의 파일로 묶기, browserify설치 및 사용법

과거에는 웹에서의 동작하는 로직이 작았다.그래서 js파일의 크기도 작았고 그로 인해 js를 관리해야할 필요성을 못느꼈다.간단한 코드를 짜는 정도로 사용했던 js가 갑자기 엄청나게 커지게된

kamang-it.tistory.com

 

 

Home | Dan DevLog

Blog posted about development

dantechblog.gatsbyjs.io

 

Parcel - 쉽고 빠르고 강력한 웹앱 번들러 - SASS / PostCSS / Babel / Production

Parcel는 2017년 여름에 등장한 새로운 웹 애플리케이션 번들러로, 별도의 설정 파일이 없고 대부분의 애셋을 지원하는 등 강력한 기능들을 가지고 있습니다.

heropy.blog

 

[Gulp.js] Gulp 입문 ① - Gulp에 대한 소개

Gulp 입문에 대한 연속적인 글을 준비하는 과정에서 전반적인 소개의 내용으로 적합한 것 같아 원 저작자의 동의를 얻어 번역한 내용을 포스팅합니다. 생산적으로 된다는 것은 우리 개발자들에

programmingsummaries.tistory.com

 

[Node.js] 12.1 편: GULP – JavaScript 빌드 자동화툴 알아보기 + ES6 문법으로 사용해보기 | VELOPERT.LOG

이번 강좌에서는 JavaScript 빌드 자동화 툴인 gulp.js 에 대하여 알아보고, ES6 문법으로 gulp.js 를 사용하는 방법을 알아보겠습니다. # 소개 Node.js 환경에서 웹 어플리케이션을 만들다보면, 일일히 수

velopert.com

 

Webpack이란 무엇인가? 정의와 필요성, 그리고 장단점 | 하늘네트

Webpack의 정의와 사용방법 요점 정리 – part 1 최근 몇 년간 정부의 연구 지원으로 진행되는 몇 가지 실험적인 프로젝트에 참여하게 되었는데, 그중 한 프로젝트를 Three.js […]

www.hanl.tech

 

[Javascript] Webpack ? Bundle ?

Webpack ? bundle ? 프론트 작업을 하게되면 필요한 것 들이 여러가지 있습니다. 컴파일이나 트랜스포터 등 화면을 띄우기 위해서는 수많은 작업이 요구됩니다. 만약 이런것들을 수동으로 작업을 해

sanghye.tistory.com

 

300x250
728x90