使用Webpack,Sass自定义字体无法生效

ted*_*777 5 css custom-font webpack

Webpack用来捆绑我的Sass文件,然后将它们处理成CSS.我也有自定义字体,我通过@font-facemixin 包含在我的Sass文件中.

我有一个文件夹结构如下:

MyAppFolder
??? app
?   ??? css
?   ?   ??? _custom_font.scss
?   ?   ??? _variables.scss
?   ?   ??? main.scss
?   ??? fonts
?   ?   ??? MyFont.otf
?   ??? images
?   ?   ??? home.png
?   ??? index.html
?   ??? js
??? webpack.config.js
Run Code Online (Sandbox Code Playgroud)

webpack.config.js是如下

^^^^ other config

loaders: [
  // SASS
  {
    test: /\.scss$/,
    loaders: ['style', 'css', 'sass']
  },

  // FONTS
  {
    test: /\.(otf|eot|svg|ttf|woff)/,
    loader: 'url-loader?limit=8192'
  }
]
....
Run Code Online (Sandbox Code Playgroud)

_custom_font.scss 如下:

@font-face {
  font-family: 'MyFont';
  src:  url('../fonts/MyFont.otf') format('otf');
}
Run Code Online (Sandbox Code Playgroud)

main.scss 如下:

body {
  font-family: 'MyFont';
}
Run Code Online (Sandbox Code Playgroud)

Webpack消失,构建一切都很好.我可以看到它包含自定义字体文件,如在webpack输出中我看到字体文件作为输出文件.

查看我的网页时,我看不到应用的自定义字体.我看到css定义是正确的,但字体看起来几乎像Times New Roman.当我从Sass文件中删除定义时,它又回到使用Helvetica Neue.我有自举,所以这就是我所期待的.

小智 1

我猜你已经在某处找到了答案。无论如何,为被困在这里的人发布答案。

Resolve-url-loader 有帮助。请参阅https://github.com/bholloway/resolve-url-loader

如下更改您的 SCSS 加载器配置。

{
  test: /\.scss$/,
  loaders: ['style-loader', 'css-loader', 'resolve-url-loader', 'sass-loader?sourceMap']
}
Run Code Online (Sandbox Code Playgroud)

确保output.publicPath配置正确。大多数情况下,应该是/

output: {
  publicPath: '/'
}
Run Code Online (Sandbox Code Playgroud)