반응형
이미지 및 폰트 등의 파일 처리
웹 개발에서는 이미지, 폰트와 같은 정적 파일들을 효과적으로 처리하는 것이 중요합니다. Webpack은 다양한 로더를 통해 이미지 및 폰트 파일들을 번들에 포함시킬 수 있습니다.
1. 이미지 로더
Webpack에서 이미지를 처리하기 위해서는 file-loader나 url-loader를 사용합니다. url-loader는 작은 이미지를 Data URL로 인라인화하여 번들 크기를 줄일 수 있습니다.
1.1 설치
npm install file-loader url-loader --save-dev
1.2 Webpack 구성
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|gif)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: 8192, // 8KB 미만의 이미지는 Data URL로 인라인
fallback: 'file-loader', // 8KB 이상의 이미지는 file-loader 사용
},
},
],
},
],
},
};
1.3 사용
// JavaScript 파일에서 이미지 불러오기
import imageUrl from './image.png';
const img = new Image();
img.src = imageUrl;
document.body.appendChild(img);
2. 폰트 로더
폰트 파일도 마찬가지로 file-loader를 사용하여 번들에 포함시킬 수 있습니다.
2.1 설치
npm install file-loader --save-dev
2.2 Webpack 구성
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.(woff|woff2|eot|ttf|otf)$/i,
use: ['file-loader'],
},
],
},
};
2.3 사용
/* CSS 파일에서 폰트 불러오기 */
@font-face {
font-family: 'CustomFont';
src: url('./custom-font.woff2') format('woff2');
font-weight: normal;
font-style: normal;
}
body {
font-family: 'CustomFont', sans-serif;
}
3. SVG 로더
SVG 파일은 이미지로서 처리될 수 있습니다. file-loader를 통해 번들에 포함시키거나, svg-url-loader를 사용하여 Data URL로 인라인화할 수 있습니다.
3.1 설치
npm install file-loader svg-url-loader --save-dev
3.2 Webpack 구성
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.svg$/i,
use: [
{
loader: 'svg-url-loader',
options: {
limit: 8192, // 8KB 미만의 SVG는 Data URL로 인라인
noquotes: true, // 따옴표를 제거하여 Data URL 생성
},
},
],
},
],
},
};
3.3 사용
// JavaScript 파일에서 SVG 불러오기
import svgUrl from './image.svg';
const img = new Image();
img.src = svgUrl;
document.body.appendChild(img);
Webpack을 이용하면 이미지, 폰트, SVG와 같은 다양한 정적 파일들을 프로젝트에 손쉽게 통합할 수 있습니다. 이를 통해 웹 애플리케이션의 성능을 최적화하고 개발 편의성을 높일 수 있습니다.
반응형
'webpack' 카테고리의 다른 글
15. 환경별 설정 (Development, Production) - 1 (0) | 2023.12.24 |
---|---|
14. 효율적인 코드 분할 - 3 (0) | 2023.12.24 |
13. 효율적인 코드 분할 - 2 (0) | 2023.12.24 |
12. 효율적인 코드 분할 - 1 (0) | 2023.12.24 |
10. 모듈 번들링과 로더 활용 - 2 (0) | 2023.12.24 |
9. 모듈 번들링과 로더 활용 - 1 (0) | 2023.12.24 |
8. Webpack의 핵심 개념 - 3 (0) | 2023.12.24 |
7. Webpack의 핵심 개념 - 2 (0) | 2023.12.24 |