微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Webpack 4:css-loader文件加载器,用于在构建过程中添加字体及其样式表

鉴于此设置:

字体/ Styles.css中

@font-face {
  family: 'MyFont';
  src: url('fonts/myfont.otf');
}

我怎么能够:

>在我的JS包中,获取对CSS文件的URL的引用,作为字符串,例如,[名称].[散列]的CSS
>生成的CSS文件应该是一个普通的CSS文件,但是url()指向生成的webfont文件

就像是:

@font-face {
  family: 'MyFont';
  src: url('myfont.dds9394u329d9sa9r8439.otf');
}

我正在尝试:

webpack.config.js

{
  test: /\.(woff|woff2|eot|ttf|otf|svg)$/,loader: 'file-loader',include: [/fonts/]
},{
  test: /\.css$/,use: ['file-loader','css-loader'],include: [/fonts/]
}

JS文件

const myfont = {
  family: 'MyFont',stylesheet: require('fonts/styles.css')
}

根据a previous question,使用file-loader和require()可以很好地获取CSS的URL,但生成文件不是纯CSS.

如何组合文件加载器和css-loader(可能还有其他加载器)来获取这个CSS文件

谢谢!

附:我想避免使用copy-webpack-plugin,因为我希望CSS / font文件可以在代码中进行哈希处理和寻址.

解决方法

对于后代:这是Webpack配置,我可以通过它获得我正在寻找的结果.

module: {
  rules: {
    // Font stylesheets
    {
      test: /\.css$/,use: [
        {
          loader: 'file-loader',options: {
            name: 'css/[hash].[ext]'
          }
        },'extract-loader','css-loader','postcss-loader'
      ],include: [/fonts/]
    },// Font files
    {
      test: /\.(woff|woff2|ttf|otf)$/,include: [/fonts/],options: {
        name: '[hash].[ext]',outputPath: 'css/',publicPath: url => '../css/' + url
      }
    },}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。