Webpack background-image в html файле не загружается - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь заставить Webpack загружать встроенные фоновые изображения из моего HTML-файла, когда я запускаю Webpack в производственном режиме. В настоящее время я использую файл-загрузчик, но это, похоже, не работает. Не уверен, почему изображения не "видны" Webpack.

Пример html фонового изображения

<div class="project" style="background-image: url('/src/assets/img/projects/airguitar.png')">

файл webpack.common.js

const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
    entry: {
        main: "./src/index.js"
    },
    module: {
        rules: [
            {
                test: /\.html$/,
                use: ["html-loader"]
            },
            {
                test: /\.(svg|png|jpg|gif)$/,
                use: {
                    loader: "file-loader",
                    options: {
                        name: "[name].[hash].[ext]",
                        outputPath: "imgs"
                    }
                }
            }
        ]
    }
};

webpack.prod.js

const glob = require('glob');
const path = require("path");
const common = require("./webpack.common");
const merge = require("webpack-merge");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const OptimizeCssAssetsPlugin = require("optimize-css-assets-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const CopyPlugin = require('copy-webpack-plugin');


const generateHTML = () => glob.sync('./src/*.html').map(
    dir => new HtmlWebpackPlugin({
        favicon: "./src/assets/img/favicon.png",
        filename: path.basename(dir),
        template: dir,
        minify: {
            removeAttributeQuotes: true,
            collapseWhitespace: true,
            removeComments: true
        }
    }),
);


module.exports = merge(common, {
    mode: "production",
    output: {
        filename: "[name].[contentHash].bundle.js",
        path: path.resolve(__dirname, "dist")
    },
    optimization: {
        minimizer: [
            new OptimizeCssAssetsPlugin(),
            new TerserPlugin(),
            ...generateHTML()
        ]
    },
    plugins: [
        new MiniCssExtractPlugin({ filename: "[name].[contentHash].css" }),
        new CopyPlugin([
            { from: './src/contact.php', to: '' },
            { from: './.htaccess', to: '' },
        ]),
        new CleanWebpackPlugin()
    ],
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    "css-loader",
                    "sass-loader"
                ]
            }
        ]
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...