인프런 커뮤니티 질문&답변

정진환님의 프로필 이미지
정진환

작성한 질문수

프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)

로더(풀이)

현재 css 안에 사용된 이미지는 base64 로 인코딩이 안됩니다

작성

·

376

1

현재 css 안에 사용된 이미지는  base64 로 인코딩이 안됩니다...   

이유를 모르겠습니다 

[package]

  "devDependencies": {

    "webpack": "5.47.1",

    "webpack-cli": "4.7.2",

    "css-loader": "6.2.0",

    "file-loader": "6.2.0",

    "style-loader": "3.2.1",

    "url-loader": "4.1.1"

  },

[webpack]

  module: {

    rules: [

      {

        test: /\.css$/,

        use: ['style-loader', 'css-loader'],

      },

      {

        test: /\.(png|jpg|gif)$/i,

        use: [

          {

            loader: 'url-loader',

            options: {

              name: '[name].[ext]?[hash]',

              publicPath: './dist',

              limit: 100000,

            },

          },

        ],

      },

    ],

답변 3

2

const path = require("path");

module.exports = {
  mode: "development",
  entry: {
    main: "./src/app.js",
  },
  output: {
    filename: "[name].js",
    path: path.resolve("./dist"),
    assetModuleFilename: "[name][ext]?[hash]"
  },
  module: {
    rules: [
      {
        test: /\.css$/, // css 확장자로 끝나는 모든 파일을 의미
        use: ["style-loader","css-loader"], // style-loader 및 css-loader 적용
      },
      {
        test: /\.png$/i, // png 확장자로 끝나는 모든 파일을 의미
        type: "asset/resource" // file-loader와 같은 효과
      }
    ],
  }
}
webpack 5 이용시 

asset module을 이용해서 file-loader와 같은 효과를 기대할 수 있습니다.

좀 더 자세한 내용은

https://webpack.js.org/guides/asset-modules/ 에서 확인 가능합니다

2

저도 webpack 5 버전에서 실행시킬 경우 이미지가 나오지 않는 이슈가 있었습니다.

 

webpack.config.js  파일을 아래와 같이 변경해 보시기 바랍니다.

아래 소스는 '윤재'님의 댓글에 달린 https://webpack.kr/guides/asset-modules/ 를 참고하여 작성했습니다.

 

const path = require('path');
const MyWebpackPlugin = require('./my-webpack-plugin');

module.exports = {
    mode: 'development',
    entry: {
        main : './src/app.js'
    },
    output: {
        // resolve = 절대 경로 설정
        path: path.resolve('./dist'),
        filename: "[name].js",
        assetModuleFilename: "[hash][ext][query]"
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [
                    'style-loader',
                    'css-loader'
                ]
            },
            {
                test: /\.(png|jpg|gif|svg)$/,
                type: 'asset/resource',
                generator: {
                    filename: '[name][ext][query][hash]'
                }
            }
        ]
    },
    plugins: [
        new MyWebpackPlugin(),
    ]
}

 

0

webpack 5 부터 asset 모듈로 대체 되었습니다.

https://webpack.kr/guides/asset-modules/

정진환님의 프로필 이미지
정진환

작성한 질문수

질문하기