首页 > 解决方案 > 如何通过 webpack 让中间人使用自定义字体和 font-awesome?

问题描述

我正在使用带有webpack的中间人。因此,我包含用于外部管道(webpack)的此配置:config.rb

activate :external_pipeline,
         name: :webpack,
         command: build? ? 'yarn run build' : 'yarn run start',
         source: '.tmp/dist',
         latency: 1

package.json包含:

  "scripts": {
    "build": "webpack --bail -p --config webpack.config.js",
    "start": "webpack --watch --progress --color --config webpack.config.js"
  },

这就是webpack.config.js外观

// webpack.config.js

var path = require('path');
var webpack = require('webpack');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
  mode: 'development',
  entry: {
    application: './source/javascripts/application.js',
    styles: './source/stylesheets/application.scss',
  },
  output: {
    path: __dirname + '/.tmp/dist',
    filename: '[name].js',
  },
  module: {
    rules: [
      {
        test: /\.s[ac]ss$/i,
        use: [
          {
            loader: 'file-loader',
            options: {
              name: '[name].css'
            }
          },
          {
            loader: 'sass-loader',
            options: {
              sourceMap: true
            }
          }
        ],
      },
      {
        test: /\.css$/,
        exclude: /node_modules/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader,
            options: {
              hmr: process.env.NODE_ENV === 'development',
            },
          },
          'css-loader',
          'postcss-loader',
        ]
      },
      {
        test: /\.(png|svg|jpg|jpeg|gif)$/,
        use: [
          'file-loader',
        ],
      },
      {
        test: /\.(woff(2)?|ttf|eot|svg|otf)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
        loader: 'file-loader',
        options: {
          name: 'fonts/[name].[ext]?[hash]'
        }
      }
    ]
  }
}

该页面已经使用了一些自定义字体(位于 中source/fonts),但现在我也想通过 webpack使用Font Awesome 。source/fonts但不知何故,如果不将字体从字体真棒字体目录手动复制到文件夹,我就无法让它工作。我确定它与webpack.config.js但我无法弄清楚,我必须如何整合它。

虽然我不确定它是否相关——这就是我包含 SCSS 的方式:

// source/stylesheets/application.scsss
@charset "utf-8";

@import "../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss";
@import "../../node_modules/@fortawesome/fontawesome-free/scss/regular.scss";

PS:只是为了澄清这一点。我想使用 webpack 在一个地方(webpack)处理所有资产。font-awesome-middleman因此,我对使用或类似的宝石没有任何兴趣。

标签: webpackwebfontswebpack-4middlemanmiddleman-4

解决方案


推荐阅读