@mirexdoors

Как правильно задать пути в file-loader?

Здравствуйте! У меня есть следующая структура в /src

| index.html
+---css
| style.css
+---img
| image.jpg

и вот такой конфиг:
const path = require(`path`);
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {
  mode: `development`,
  entry: `./src/index.js`,
  output: {
    filename: `[name].js`,
    path: path.join(__dirname, `public`)
  },
  optimization: {
    splitChunks: {
      name: 'vendor',
      chunks: 'all',
    },
  },
  plugins: [
    ...['index','catalog'].map((event) => {
      return new HtmlWebpackPlugin({
        template: `./src/${event}.html`,
        filename: `${event}.html`,
      })
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].css',
    })
  ],
  devtool: `source-map`,
  devServer: {
    contentBase: path.join(__dirname, `public`),
    publicPath: `http://localhost:8080`,
    hot: true
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: 'babel-loader'
      },
      {
        test: /\.(css|scss)$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
          },
          'css-loader',
          'sass-loader',
        ]
      },
      {
        test: /\.(jpe?g|png|gif|svg)$/,
        use: {
          loader: 'file-loader',
          options: {
            name: '[name].[ext]',
            outputPath: 'img',
            publicPath: '../img',
          }
        }
      },
    ]
  }
};


В css загружаю файл так:
background-image: url("../img/modal-map.jpg");
а в .html:
<img src="<%= require('./img/slide.jpg') %>">

на dev-сервере всё работает отлично а вот при сборке ломается путь к файлу из html. Не могу сообразить как же правильно грузить файлы в таком случае.

Заранее спасибо!
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы