【问题标题】:webpack: webpack.config.js not loading fonts correctlywebpack:webpack.config.js 没有正确加载字体
【发布时间】:2017-07-29 09:12:41
【问题描述】:

我有以下来自https://survivejs.com/webpack/styling/loading/的webpack sn-p

{
         test: /\.(woff|woff2|eot|ttf|svg|otf)(\?v=\d+\.\d+\.\d+)?$/,
        loader: 'url-loader',
        options:{
          name: '[name].[ext]'
        }
      },

用于从我的 css/fonts 目录加载字体。 我的 CSS 目录有以下文件:

type/
img/
design.css

我可以在我的项目中成功使用 css 文件和 img 文件。

输入类型

我有一堆格式如下的字体

font-bold-v01.otf
font-bold-v01.woff

这些在我的 design.css如下:

  src:  url("./type/font-bold-v01.woff") format("woff"),

如果我删除我的 webpack sn-ps,我会收到错误消息。使用我的 sn-p 我没有收到任何错误,但字体不会影响在非 webpack 项目中工作的组件。

有什么想法吗?

问题要点: https://gist.github.com/MatthewJamesBoyle/2cebb7d1cdc76dc1692125d08fd9a31d

【问题讨论】:

    标签: css node.js webpack webpack-dev-server webpack-2


    【解决方案1】:

    您的字体被嵌入到 JS 中,这就是为什么当 JS 不包含在 HTML 中时它们停止工作

    不幸的是,这是 webpack 1,您需要针对 webpack 2 进行调整

    如果您希望将 CSS 和资产(字体/图像)构建到独立文件中:

    安装这些插件:

    npm install --save-dev file-loader
    npm install --save-dev extract-text-webpack-plugin@1.0.1
    

    使用 ExtractTextPlugin 编写 CSS:

    // in your webpack.config.js file
     var ExtractTextPlugin = require('extract-text-webpack-plugin')
    
    
    // in the "module" section of your webpack config
    plugins:[
    new ExtractTextPlugin(
                './css/[name].css',
                {
                allChunks:true,
            }),
    //...
    ]
    

    并使用文件加载器(令人困惑的是,它实际上是一个文件写入器) 而不是 url-loader:

    //in the "module/loaders" section of your webpack config
    
               {
                    test: /\.css$/,
                    loader: ExtractTextPlugin.extract("style-loader", "css-loader")
                },
    
               {
                    test: /\.(woff|woff2|eot|ttf|svg|jpg|png|ico)(\?.+)?$/,
                    loader: 'file-loader',
                    query: {
                        name: './static/[name].[ext]'
                    }
               },
    

    请注意,文件加载器为要写入的字体指定 static 子文件夹。

    确保你在 webpack 配置对象的顶层设置这个:

     output: {
            publicPath: '/', // HTTP server base URL
            path: '/home/user/project/build', // filesystem path for the webpack bundles
    }
    //...
    

    使用此示例配置,您将在此文件夹中获取字体:

    /home/user/project/build/static

    和中的 CSS

    /home/user/project/build/css

    【讨论】:

    • 感谢您的帮助,我仍然遇到了一些问题。如果您能提供帮助,我会提出一个要点,我将不胜感激:gist.github.com/MatthewJamesBoyle/…
    • 哦,您需要使用 npm 安装插件(如我的回答中所述)并使用 var ExtractTextPlugin = require('extract-text-webpack-plugin'); 导入它
    • 我调整了答案
    • 您的建议似乎朝着正确的方向发展,但效果不佳。我继续前进,但又碰壁了。介意快速浏览一下我更新的要点吗?非常感谢您在这方面的帮助。
    • 文件与正则表达式不匹配,请再次复制粘贴文件加载器部分,我已经更新了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多