file-loader와 url-loader?
웹팩 설정 중 둘의 차이가 궁금해 알아보며 공부했던 내용을 정리해봅니다
file-loader
The file-loader resolves import/require() on a file into a url and emits the file into the output directory.
- 파일에 import/requrie 구문을 만들어주고, 파일을 output 폴더에 생성해주는 로더 → 파일 자체를 가져옴
url-loader
A loader for webpack which transforms files into base64 URIs.
->The url-loader works like the file-loader, but can return a DataURL if the file is smaller than a byte limit.
- 파일을 base64 URL로 변환해주는 로더 → 번들링 된 js 코드에 파일이 코드로 내장됨
- url-loader는 file-loader처럼 동작하지만, byte limit보다 작을 경우에만 DataURL을 리턴한다.
그러니까 url-loader에 limit을 설정해두면 limit 이하의 용량은 url-loader가 처리, 그 이상은 file-loader가 처리해준다는 것 !
그렇다면 url-loader 설정을 알아봅시다.
url-loader 설정
{
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
name: '[name].[ext]?[hash]',
publicPath: './dist/',
limit: 10000
}
}
url-loader 설정 옵션을 봅시다.
- limit에 url-loader로 처리할 파일의 최대 byte를 명시한다.
- url-loader에는 fallback이라는 옵션이 있어 여기에 fallback 모듈을 명시해주면 limit을 초과하는 파일들을 해당 모듈로 넘겨준다.
→ ★아무것도 명시해주지 않을 경우 기본으로 file-loader를 이용한다. - publicPath는 file-loader로 넘어간 파일의 경로를 잡아주기 위해 넣어준다. 빌드시 publicPath로 지정한 경로에 파일이 생성된다.
limit 옵션을 아주 크게 잡아둔다면?
'dist 폴더에 복잡하게 이미지 파일이 늘어나는 게 마음에 안들어...
limit을 아예 크게 잡아버리고 다 URL로 처리하면 간단하지 않을까?'
라는 생각이 들 수도 있습니다...
이미지파일을 아예 번들파일에 포함시키면 파일요청 횟수가 줄어든다는 장점이 있지만, url-loader가 처리하는 파일은 js코드와 함께 번들링되기 때문에 그만큼 번들파일 크기가 커지게됩니다
번들파일이 너무 크면 실행 속도에 문제가 되므로 크기 제한을 적절히 두는 것이 중요하겠지요
이미지 파일이 안 보인다?
혹시나 url-loader로 limit을 설정해 이미지 파일을 넣었는데 용량을 초과한 이미지가 화면에서 보이지 않는다면?
file-loader에 의해 이미지 경로가 dist폴더로 변경되었으니 dist에 이미지 파일이 있는지 확인해보고 없다면 build해서 file-loader가 dist에 이미지 파일을 가져올 수 있도록 도와주세요 ^^!
(제가 처음 웹팩 설정 공부할 때 삽질했어요.. )
참고 : 웹팩공식사이트 문서
'Joyful 개발' 카테고리의 다른 글
[Git] 다른 사람의 pr을 로컬에서 확인하는 법, pull request 가져오기 (0) | 2021.06.14 |
---|---|
[Git] 커밋을 해도 잔디가 안 심어질 때, fork한 repository의 커밋으로도 잔디를 심어보자, 저장소의 커밋 기록까지 전부 복사해오기 ! (3) | 2021.06.14 |
[최적화] 이미지 압축과 사이즈 조절로 웹 사이트 최적화하기,로딩속도와 TBT 개선 (+이미지 압축 사이트 추천) (0) | 2021.02.24 |
[Naming] register? create? 회원가입 컴포넌트 네이밍 (0) | 2021.02.22 |
[최적화] lazy loading 레이지 로딩으로 로딩 속도를 개선해보자 (0) | 2021.02.04 |