티스토리 뷰

Front-End/Webpack

source map

돈파치 2021. 10. 3. 00:04
반응형

웹팩을 실행하여 여러 모듈을 하나의 번들링 파일로 만들 때 자바스크립트에서 에러가 발생하면 브라우저의 콘솔에는 번들링된 하나의 파일 첫째줄에서 에러가 떴다고 알려주기 때문에 어떤 모듈의 몇 번째 줄에서 에러가 떴는지 정확히 알기 쉽지 않다.

쉽게 에러를 트래킹하기 위해 웹팩에서는 source map이라는 모듈을 사용한다.

 

이것은 에러가 발생하거나 디버깅할 때 번들링하기 전의 파일인 원래 소스 코드로 맵핑해주는 기능을 제공한다.

해당 기능은 다양한 옵션이 있으며 개발모드와 배포모드마다 옵션을 달리해야 적절한 기능을 사용할 수 있다.

devtool이라는 key에 source map의 옵션을 적는데 source map의 옵션은 너무나도 많다.

devtool을 설정하지 않거나 옵션을 적지 않았을 경우 빌드와 재빌드가 가장 빠르며 배포모드에서만 권장한다.

흔히 개발모드에서 eval-source-map, eval-cheap-source-map, inline-source-map을 자주 쓰며 공식 사이트에서는 eval-cheap-source-map을 권장하고 있다.

배포모드에서는 source map을 설정하지 않거나 hidden-source-map을 자주 쓴다고 한다.

다음 예시처럼 설정하면 된다.

// webpack.dev.js 파일 혹은 webpack.prod.js파일

// ...
module.exports = merge(common,{
  mode: // ... 개발모드 혹은 배포모드,
  devtool : 'eval-cheap-source-map', // 개발모드일 경우
  // ...
})

 

다음은 소스맵에 대한 간략한 설명이다.

eval-cheap-source-map

이 옵션은 에러 코드가 표시될 때 브라우저 콘솔에서 원본코드의 구체적인 줄이 아닌 번들링 된 파일 기준의 줄번호를 알려준다.

소스맵은 줄번호만 매핑되며 열 매핑은 되지 않는다.

이 옵션은 다른 옵션에 비해 초기빌드가 비교적 빠르며 재빌드 속도는 비교적 제일 빠르다.

 

eval-source-map

이 옵션은 모든 기능이 포함된 소스맵을 생성할 수 있어 고품질의 소스맵을 사용하는 개발모드에 권장된다.

하지만 이 옵션은 초기 빌드가 비교적 가장 느리다는 단점이 있지만 재빌드 속도는 비교적 빠르다.

또한 에러 코드가 표시될 때 브라우저 콘솔에서 원본코드의 구체적인 줄이 아닌 번들링 된 파일 기준의 줄번호를 알려주는 단점이 있다.

inline-source-map

이 옵션은 DataUrl로 소스맵이 추가되며 에러코드가 표시될 때 브라우저 콘솔에서 원본코드의 구체적인 줄번호도 알려준다.

하지만 이 옵션은 초기 빌드 속도가 비교적 가장 느리며 재빌드 속도도 비교적 가장 느리다는 단점이 있다.

hidden-source-map

이 옵션은 배포모드에 적절하며 번들링 파일에 참조 주석을 추가하지 않으며 에러코드가 표시될 때에도 번들링된 파일의 줄번호를 알려주어 디버깅하는데 불편함이 있다.

개인적으로 source map을 추가하지 않은 것과 별반 차이가 없어 필자는 배포모드 때 추가하지 않으며 source map을 적용하지 않는다.

반응형

'Front-End > Webpack' 카테고리의 다른 글

webpack-bundle-analyzer  (0) 2021.10.02
배포모드 시 HTML, JS, CSS 코드 압축  (0) 2021.10.02
코드 스플리팅  (0) 2021.10.02
dev-server란 무엇인가?  (0) 2021.10.02
mode란 무엇인가?  (0) 2021.10.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
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 31
글 보관함
반응형