Webpack file-loader ignoring PNG files
Asked Answered
E

3

10

I'm trying to output all image files through webpack file loader, webpack is ignoring images with PNG extensions however. Configuration works correctly on JPG files.

My webpack config:

const path = require('path');

const PATHS = {
    src: path.join(__dirname, 'src'),
    img: path.join(__dirname, 'src/img'),
    styles: path.join(__dirname, 'src/styles'),
    build: path.join(__dirname, 'build')
}

module.exports = {
    context: PATHS.src,
    entry: {
        script: ['./scripts/main.js', './styles/main.scss'],
        index: './index.html'
    },
    output: {
        path: PATHS.build,
        filename: '[name].js'
    },
    module: {
        loaders: [{
            test: /\.scss$/,
            loaders: ["style", "css", "sass"],
            include: PATHS.styles
        }, {
            test: /\.(png|jpg)$/i,
            loader: 'file?name=[path][name].[ext]',
            include: PATHS.img
        }, {
            test: /\.(html)$/,
            loader: 'file?name=[path][name].[ext]'
        }]
    }
};

source folder structure

Expository answered 16/10, 2016 at 16:8 Comment(2)
Tried to convert both PNG files to JPG format and output is still the same (only "slide1_background.jpg" is outputed to build folder). Therefore the problems seems not to be with extension matching regex.Expository
Which version of webpack you are using? How are you importing png in your application?Tadeo
E
2

The problem with the PNG files was with importing PNG images, both were imported by html src attribute, while JPG image was imported by url attribute in css. Therefore the problem was not in the image formats.

Fixed by adding extract-loader and html-loader to html loader. Webpack then matches even src attributes in html if i understand it correctly.

Html loader configuration:

loader: 'file-loader?name=[path][name].[ext]!extract-loader!html-loader'

Thanks for pointing me out about the image importing method.

Expository answered 17/10, 2016 at 11:41 Comment(0)
T
1

It might be a problem with loader it self you can try url-loader

{ test: /\.(png|jpg|jpeg)$/, loader: 'url-loader?limit=10000' }
Tadeo answered 16/10, 2016 at 16:45 Comment(1)
Tried with url-loader but it still ignores PNG files. All permissions to image files are the same for both PNG and JPG files. Webpack doesn't throw any errors. Thanks for the reply anyway.Expository
E
1
 {
    test: /\.(png|svg|jpg|gif|jpe?g)$/,
    use: [
      {
        options: {
          name: "[name].[ext]",
          outputPath: "images/"
        },
        loader: "file-loader"
      }
    ]
  }
Elston answered 7/6, 2019 at 17:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.