패키징
: 개발이 완료된 소프트웨어를 배포하기 위해 하나의 실행 파일로 만드는 것
- 참조
: 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
'Programming > JavaScript' 카테고리의 다른 글
| undefined / null / NaN / 0 / '' 의차이 (0) | 2023.05.19 |
|---|---|
| NodeJS 백로그 관리 (0) | 2023.05.15 |
| Express HTTP 에러 핸들링 (0) | 2023.04.24 |
| express의 구조 (0) | 2023.02.13 |
| 나쁜 자바스크립트 작성 습관과 작별하기 (0) | 2022.12.27 |
