css - 在 webpack 中配置字体

标签 css webpack sass fonts

我这里的 webpack 有点问题;我有点无法加载字体。 这是我的 webpack.config.js

const nodeExternals = require('webpack-node-externals');
const path = require('path');
const devMode = true;
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {
    entry:
        [
            './src/main.js',
            './scss/main.scss'
        ],

    output: {
        filename: "main.min.js",
        chunkFilename: '[name].bundle.min.js?bust=[chunkhash]',
        path: path.resolve(__dirname, 'static_root'),
        publicPath: "/assets/"
    },
    target: "node",
    externals: [nodeExternals()],
    plugins: [
        new MiniCssExtractPlugin({
            filename: '[name].css',
            chunkFilename: '[id].css',
            ignoreOrder: false, // Enable to remove warnings about conflicting order
        }),
    ],
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader"
                }
            },
            {
                test: /\.scss$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '[name].css',
                            outputPath: 'css/'
                        }
                    },
                    {
                        loader: 'extract-loader'
                    },
                    {
                        loader: 'css-loader'
                    },
                    {
                        loader: 'postcss-loader'
                    },
                    {
                        loader: 'sass-loader'
                    }
                ]
            },
            {
                test: /\.css$/,
                use: [
                    {
                        loader: MiniCssExtractPlugin.loader,
                        options: {
                            publicPath: '../',
                            hmr: process.env.NODE_ENV == 'development',
                        }
                    },
                ],
            },
            {
                test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/,
                loader: 'url-loader',
                options: {
                    limit: 10000,
                    name: '[name].[ext]'
                }
            }
        ]
    }
};

这会构建我的 css,尽管我的本地字体不包含/不呈现。这也会将我的字体复制到/static_root(这是构建 css 的地方)。

所以我最终得到了这个目录结构:

public/static_root/css/main.css
public/static_root/BebasNeue-Regular.ttf
public/static_root/main.min.js

不幸的是,我考虑过只调整我的 scss 文件中字体的路径,尽管这会使构建过程失败,因为我的工作目录和输出根目录不相同。

我的 scss/font-directory 结构如下:

/public/scss/fonts/_fonts.scss
/public/scss/fonts/BebasNeueRegular.ttf
/public/scss/main.scss

那么我怎样才能实现包含字体,或者这通常是如何完成的,因为我在网上发现了很多不同的方法,很遗憾,这些方法对我没有用。

如有任何帮助,我们将不胜感激。

您好, derelektrischemoench

最佳答案

所以我找出了导致问题的原因。它必须对字体的加载器做一些事情(我使用的是旧的)。我像这样使用 url-loader 尝试了整个过程:

{
  test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/,
  loader: 'url-loader',
  options: {
      limit: 10000,
      name: '[name].[ext]'
      }
  }

... 这让一切顺利进行。这有点令人困惑,因为我在网上找到了无数关于如何实现这一目标的教程,其中大部分已被弃用。

感谢您的回复。

关于css - 在 webpack 中配置字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203689/

相关文章:

html - 导航在背景图像之上

html - 使用 CSS 在图像上定位价格圈

angular - 在特定的 Docker 容器环境中配置 Angular 2 Webpack App

javascript - 使用 Storybook 创建 React App 创建 webpack 问题

webpack - 设置 webpack 4.0 以通过 ExtractTextPlugin 使用 Google Material 设计 SASS

css - 在页面上放置按钮的问题

php - 使用 CSS 打断文本

node.js - 为什么热重载不适用于 reactjs visual studio 2019 模板

ruby-on-rails - 如何在没有文件或行引用的情况下运行 compass 编译?

css - 如何在 Bootstrap 4 中使用 Sass 更改字体大小?