webpack 字体很棒,在根目录下转储文件

webpack font awesome, dumping files at root

我有下面的 webpack.config,当我在我的 index.js 中导入 font awesome 时,webpack 正在将所有字体文件转储到根目录 (dist)。字体规则将它们放在“字体”子文件夹中,但它也会以这种奇怪的格式(导出命令)将它们转储到根目录中。

如果我不导入 fontawesome,它不会在根目录下创建文件。我不明白为什么会这样,关于如何解决的任何想法。

webpack.config.js:

const path = require('path');
const webpack = require('webpack');

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const { VueLoaderPlugin } = require("vue-loader");

const srcPath = path.resolve(__dirname, './src');
const stylePath = path.resolve(srcPath, './styles');
const bldPath = path.resolve('../MyApp/wwwroot/dist');

module.exports = {
    devtool: 'source-map',
    entry: {
        master: path.resolve(srcPath, 'index.js'),
        style: `${stylePath}/style.css`
    },
    mode: 'development',
    module: {
        rules: [
            {
                test: /\.scss$/,
                use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
            },
            {
                exclude: /(node_modules|bower_components)/,
                include: srcPath,
                test: /\.js$/,
                use: [{ loader: 'babel-loader' }]
            },
            {
                test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '[name].[ext]',
                            publicPath: './fonts/',
                            outputPath: './fonts/',
                            esModule: false
                        }
                    }
                ]
            },
            {
                test: /\.css$/,
                use: [MiniCssExtractPlugin.loader, 'css-loader']
            },
            {
                test: /\.vue$/,
                loader: 'vue-loader'
            },
            {
                test: /\.(png|jpg|jpeg|gif)$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '[name].[ext]',
                            outputPath: './images/',
                            publicPath: './images/',
                            esModule: false
                        }
                    }
                ]
            },
            {
                test: require.resolve("jquery"),
                loader: "expose-loader",
                options: {
                    exposes: ["$", "jQuery"],
                },
            }
        ]
    },
    optimization: {
        splitChunks: {
            cacheGroups: {
                vendors: {
                    chunks: 'all',
                    name: 'vendor',
                    test: /[\/]node_modules[\/]/
                }
            }
        },
    },
    output: {
        path: `${bldPath}`,
        publicPath: '/wwwroot/dist/'
    },
    plugins: [
        new CleanWebpackPlugin({
            cleanOnceBeforeBuildPatterns: [`${bldPath}/**`],
            dry: false,
            verbose: true,
            dangerouslyAllowCleanPatternsOutsideProject: true
        }),
        new VueLoaderPlugin(),
        new MiniCssExtractPlugin({
            filename: '[name].min.css'
        })
    ]
};

index.js > 正在导入 fontawesome...

import '@fortawesome/fontawesome-free/css/all.css';

结果...

其中一个文件的内容...

看起来我在导入 fontawesome 5 时出错了,我最终在我的入口 js 文件中这样做了 (index.js)。现在所有图标都可用,不再将所有字体转储到 /dist 根目录。

导入'@fortawesome/fontawesome-free/js/fontawesome' 导入“@fortawesome/fontawesome-free/js/solid” 导入“@fortawesome/fontawesome-free/js/regular” 导入'@fortawesome/fontawesome-free/js/brands'

我在哪里找到答案:

How to make Font awesome 5 work with webpack