4

所以我有以下字体设置:

$font-path: '~@/assets/fonts/';
@font-face {
    font-family: 'mainFont';
    font-weight: 300;
    font-style: normal;
    src: url('#{$font-path}mainFont/mainFont.eot') format('eot'),
    url('#{$font-path}mainFont/mainFont.woff2') format('woff2'),
    url('#{$font-path}mainFont/mainFont.woff') format('woff'),
    url('#{$font-path}mainFont/mainFont.ttf') format('truetype'),
    url('#{$font-path}mainFont/mainFont.svg#mainFont') format('svg');
}

构建(使用 vue.js webpack btw)按预期工作。该应用程序将无法加载字体。srcurl 指向错误的目录。将 更改为$font-path相对于输出文件的文件夹时(如建议的那样),构建失败,因为它找不到字体。

4

1 回答 1

14

使用文件加载器并在您的规则中使用类似这样的内容(示例取自我的项目):

{
    test: /\.(woff2?|ttf|otf|eot|svg)$/,
    exclude: /node_modules/,
    loader: 'file-loader',
    options: {
        name: '[path][name].[ext]'
    }
}

这会将文件复制到您的构建文件夹中,并将正确的 URL 注入到 CSS 中的这些文件中。

第二件事是将resolve-url-loader添加到您的 scss 规则中:

{
    test: /\.scss$/,
    use: ExtractTextPlugin.extract({
        fallback: 'style-loader',
        use: ['css-loader', 'resolve-url-loader', 'sass-loader?sourceMap']
    })
}
于 2017-05-31T10:57:24.523 回答